1. مقدمه
Private Service Connect به یک تولید کننده سرویس اجازه می دهد تا خدمات را به صورت خصوصی به مصرف کننده خدمات ارائه دهد. Private Service Connect مزایای زیر را ارائه می دهد:
- یک شبکه VPC تولید کننده خدمات می تواند بیش از یک مصرف کننده سرویس را پشتیبانی کند.
- هر مصرف کننده به یک آدرس IP داخلی که خودش تعریف می کند متصل می شود. Private Service Connect ترجمه آدرس شبکه (NAT) را برای هدایت درخواست به تولید کننده سرویس انجام می دهد.
شکل 2. Private Service Connect از نقاط پایانی و پیوست های سرویس استفاده می کند تا به مصرف کنندگان سرویس اجازه می دهد تا ترافیک را از شبکه VPC مصرف کننده به خدمات در شبکه VPC تولید کننده خدمات ارسال کنند (برای بزرگنمایی کلیک کنید).
چیزی که یاد خواهید گرفت
- مزایای اتصال سرویس خصوصی
- مفاهیم کلیدی برای مصرف کنندگان خدمات
- مفاهیم کلیدی برای تولیدکنندگان خدمات
- یک محیط تولید کننده ایجاد کنید
- خدمات (محیط تولیدکننده) را از طریق پیوست سرویس در معرض دید قرار دهید
- یک محیط مصرف کننده ایجاد کنید
- یک قانون حمل و نقل در شبکه مصرف کننده ایجاد کنید
- اعتبار دسترسی مصرف کننده
- کنترل دسترسی خط مشی را فعال کنید
- از قانون فایروال خروجی برای مسدود کردن دسترسی به قانون حمل و نقل مصرف کننده استفاده کنید
آنچه شما نیاز دارید
- دانش استقرار خوشه ها و سرویس های GKE
- آشنایی با بار متعادل کننده های داخلی
- امکان ایجاد VPC در دو پروژه
- امکان ایجاد GKE Cluster
2. مزایای اتصال سرویس خصوصی
با PSC، در مقایسه با استفاده از VPC Peering، چندین مزیت دارید:
کنترل بهتر فضای IP خصوصی
- به عنوان مصرف کننده خدمات، می توانید آدرس IP خصوصی را که برای اتصال به سرویس مدیریت شده ای که می خواهید به آن دسترسی داشته باشید، کنترل کنید.
- به عنوان یک مصرف کننده خدمات، لازم نیست نگران رزرو محدوده آدرس IP خصوصی برای خدمات باطنی که در VPC شما مصرف می شود باشید. برای اتصال به خدمات تولید کننده فقط باید یک آدرس IP از زیر شبکه خود انتخاب کنید.
- بهعنوان تولیدکننده خدمات، میتوانید یک مدل چند مستاجر را انتخاب کنید، جایی که VPC شما حاوی خدماتی است که به چندین VPC مصرفکننده خدمات ارائه میدهد. مصرف کنندگانی که محدوده های زیرشبکه همپوشانی دارند دیگر مشکلی ندارند.
- بهعنوان یک ارائهدهنده خدمات، میتوانید سرویس خود را به هر تعداد مورد نیاز VM تغییر دهید، بدون نیاز به تماس با مشتری برای آدرسهای IP بیشتر.
امنیت و انزوا بهبود یافته است
- به عنوان یک مصرف کننده خدمات، فقط شما می توانید ارتباط را با تولید کننده خدمات آغاز کنید. این اتصال یک طرفه پیکربندی فایروال را به شدت ساده می کند، اما خطر ترافیک سرکشی را که از طرف تولید کننده سرویس می آید را نیز کاهش می دهد.
- به عنوان یک تولید کننده خدمات، نیازی به تغییر قوانین فایروال خود بر اساس محدوده های زیر شبکه در VPC مصرف کننده ندارید. شما به سادگی می توانید قوانین فایروال را برای محدوده آدرس IP NAT پیکربندی شده برای سرویس خود ایجاد کنید.
مقیاس پذیری بهتر
- PSC با پشتیبانی از هزاران مشتری، طراحی بسیار مقیاسپذیر را امکانپذیر میکند و به تولیدکنندگان خدمات اجازه میدهد تا خدمات چند مستاجر یا تک مستاجر بسیار مقیاسپذیر را ارائه دهند.
- به عنوان یک مصرف کننده خدمات با استفاده از اتصال سرویس خصوصی، می توانید منابع مورد نیاز را در VPC خود ایجاد کنید. مقیاس این مورد تحت تأثیر تعداد چنین منابع ایجاد شده در VPC تولید کننده قرار نمی گیرد.
3. مفاهیم کلیدی برای مصرف کنندگان خدمات
می توانید از نقاط پایانی Private Service Connect برای مصرف سرویس هایی که خارج از شبکه VPC شما هستند استفاده کنید. مصرف کنندگان خدمات، نقاط پایانی Private Service Connect را ایجاد می کنند که به یک سرویس هدف متصل می شوند.
نقاط پایانی
شما از نقاط پایانی Private Service Connect برای اتصال به یک سرویس هدف استفاده می کنید. نقاط پایانی یک آدرس IP داخلی در شبکه VPC شما دارند و بر اساس منبع قانون حمل و نقل هستند.
شما ترافیک را به نقطه پایانی ارسال می کنید، که آن را به اهداف خارج از شبکه VPC شما ارسال می کند.
اهداف
نقاط پایانی Private Service Connect یک هدف دارند، این سرویسی است که می خواهید به آن متصل شوید:
- یک بسته API :
- همه APIها: اکثر APIهای Google
- VPC-SC: API هایی که VPC Service Controls از آن ها پشتیبانی می کند
- یک سرویس منتشر شده در یک شبکه VPC دیگر. این سرویس می تواند توسط سازمان خودتان یا شخص ثالث مدیریت شود.
سرویس منتشر شده
برای اتصال نقطه پایانی خود به سرویس تولیدکننده خدمات، به پیوست سرویس برای سرویس نیاز دارید. URI پیوست سرویس دارای این قالب است: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. مفاهیم کلیدی برای تولیدکنندگان خدمات
برای در دسترس قرار دادن یک سرویس برای مصرف کنندگان، یک یا چند زیرشبکه اختصاصی ایجاد می کنید تا از آن برای ترجمه آدرس شبکه (NAT) آدرس های IP مصرف کننده استفاده کنید. سپس یک پیوست سرویس ایجاد میکنید که به آن زیرشبکهها اشاره دارد.
زیرشبکه های Private Service Connect
برای افشای یک سرویس، تولید کننده سرویس ابتدا یک یا چند زیرشبکه را با هدف Private Service Connect ایجاد می کند .
هنگامی که درخواستی از یک شبکه VPC مصرف کننده ارسال می شود، آدرس IP منبع مصرف کننده با استفاده از NAT منبع (SNAT) به آدرس IP انتخاب شده از یکی از زیرشبکه های Private Service Connect ترجمه می شود.
اگر می خواهید اطلاعات آدرس IP اتصال مصرف کننده را حفظ کنید، به مشاهده اطلاعات اتصال مصرف کننده مراجعه کنید.
این زیرشبکه ها را نمی توان برای منابعی مانند نمونه های VM یا قوانین حمل و نقل استفاده کرد. زیرشبکه ها فقط برای ارائه آدرس های IP برای SNAT اتصالات مصرف کننده ورودی استفاده می شوند.
زیرشبکه Private Service Connect باید حداقل یک آدرس IP برای هر 63 ماشین مجازی مصرف کننده داشته باشد تا به هر VM مصرف کننده 1024 تاپل منبع برای ترجمه آدرس شبکه اختصاص داده شود.
حداقل اندازه برای یک زیرشبکه Private Service Connect 24/ است.
پیوست های سرویس
تولیدکنندگان خدمات خدمات خود را از طریق یک پیوست سرویس در معرض دید قرار می دهند.
- برای افشای یک سرویس، یک تولید کننده سرویس یک پیوست سرویس ایجاد می کند که به قانون حمل و نقل متعادل کننده بار سرویس اشاره دارد.
- برای دسترسی به یک سرویس، یک مصرف کننده سرویس یک نقطه پایانی ایجاد می کند که به پیوست سرویس اشاره دارد.
تنظیمات برگزیده اتصال
هنگامی که یک سرویس ایجاد می کنید، نحوه در دسترس قرار دادن آن را انتخاب می کنید. دو گزینه وجود دارد:
- پذیرش خودکار اتصالات برای همه پروژه ها - هر مصرف کننده سرویس می تواند یک نقطه پایانی را پیکربندی کند و به طور خودکار به سرویس متصل شود.
- اتصالات را برای پروژه های انتخاب شده بپذیرید - مصرف کنندگان خدمات یک نقطه پایانی را برای اتصال به سرویس پیکربندی می کنند و تولید کننده سرویس درخواست های اتصال را می پذیرد یا رد می کند.
الزامات و محدودیت ها
- محدودیتهایی برای Private Service Connect اعمال میشود.
- میتوانید یک پیوست سرویس در نسخههای GKE 1.21.4-gke.300 و جدیدتر ایجاد کنید.
- شما نمی توانید از یک زیرشبکه مشابه در تنظیمات پیوست سرویس چندگانه استفاده کنید.
- شما باید یک سرویس GKE ایجاد کنید که از یک متعادل کننده بار داخلی TCP/UDP استفاده می کند.
5. محیط تست
شبکه مصرفکننده شامل یک آدرس IP ثابت است که برای ایجاد درخواستها به تولیدکننده خدمات، علاوه بر پیوست سرویس هدف که به پیوست سرویس تولیدکننده (سرویس منتشر شده) نگاشت میشود، استفاده میشود.
حالا بیایید نگاهی به شبکه تولیدکنندگان بیندازیم. توجه کنید که چگونه شبکه تولیدکنندگان نقشه ای به شبکه مصرف کنندگان ندارد، در عوض، شبکه تولیدکننده شامل یک پیوست سرویس (سرویس منتشر شده) است که توسط مصرف کننده برای خدمات استفاده می شود. پیوست سرویس تولیدکننده توسط یک ورودی GKE L4 ILB (سرویس منتشر شده) که امکان ارتباط با GKE Pods و برنامههای مرتبط را فراهم میکند، آشکار میشود.
زیرشبکه NAT زمانی استفاده می شود که درخواستی از یک شبکه VPC مصرف کننده ارسال شود، آدرس IP منبع مصرف کننده با استفاده از NAT منبع (SNAT) به آدرس IP انتخاب شده از یکی از زیرشبکه های Private Service Connect ترجمه می شود.
این زیرشبکه ها را نمی توان برای منابعی مانند نمونه های VM یا قوانین حمل و نقل استفاده کرد. زیرشبکه ها فقط برای ارائه آدرس های IP برای SNAT اتصالات مصرف کننده ورودی استفاده می شوند.
برای کسب اطلاعات بیشتر در مورد L4ILB برای GKE Private Service Connect و دسترسی مستقیم به محتوای مورد استفاده برای ساخت این آزمایشگاه به موارد زیر مراجعه کنید.
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود. - یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعملهای «پاکسازی» را که در انتهای Codelab یافت میشود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
6. قبل از شروع
Codelab به دو پروژه نیاز دارد، اگرچه برای PSC الزامی نیست. به مراجع برای پشتیبانی از پروژه های تک یا چندگانه توجه کنید.
پروژه واحد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده و مصرف کننده
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
پروژه های متعدد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
به قرارداد کد رنگ آمیزی زیر توجه کنید:
7. ایجاد شبکه VPC Producers
شبکه VPC
از Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
زیر شبکه GKE Cluster ایجاد کنید
از Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
خوشه GKE ایجاد کنید
از Cloud Shell
gcloud container clusters create gke-psc-l4 \ --release-channel=rapid \ --enable-ip-alias \ --zone=us-central1-a \ --network gke-producer-l4-vpc \ --num-nodes 1 \ --subnetwork node-subnet1 \ --cluster-secondary-range-name pod \ --services-secondary-range-name service
ایجاد یک زیرشبکه برای Private Service Connect (زیر شبکه NAT)
برای استفاده با Private Service Connect باید یک یا چند زیرشبکه اختصاصی ایجاد کنید. اگر از Google Cloud Console برای انتشار یک سرویس استفاده میکنید، میتوانید در طی آن زیرشبکهها را ایجاد کنید.
برای اطلاعات در مورد زیرشبکه های Private Service Connect، به زیرشبکه های Private Service Connect مراجعه کنید.
از Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \ --project $prodproject \ --network gke-producer-l4-vpc \ --region us-central1 \ --range 100.100.10.0/24 \ --purpose PRIVATE_SERVICE_CONNECT
8. حجم کار و خدمات را مستقر کنید
مانیفست زیر یک Deployment را توصیف می کند که یک نمونه تصویر ظرف برنامه وب را اجرا می کند. مانیفست را به عنوان my-deployment.yaml از پوسته ابری ذخیره کنید
apiVersion: apps/v1 kind: Deployment metadata: name: psc-ilb spec: replicas: 3 selector: matchLabels: app: psc-ilb template: metadata: labels: app: psc-ilb spec: containers: - name: whereami image: gcr.io/google-samples/whereami:v1.2.1 ports: - name: http containerPort: 8080 readinessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 5 timeoutSeconds: 1
مانیفست را از پوسته ابری روی خوشه خود اعمال کنید
kubectl apply -f my-deployment.yaml
یک سرویس ایجاد کنید
مانیفست زیر سرویسی را توصیف می کند که یک متعادل کننده بار TCP/UDP داخلی در پورت TCP 8080 ایجاد می کند. مانیفست را به عنوان my-service.yaml از پوسته ابری ذخیره کنید.
apiVersion: v1 kind: Service metadata: name: gke-l4-psc annotations: networking.gke.io/load-balancer-type: "Internal" spec: type: LoadBalancer selector: app: psc-ilb ports: - port: 80 targetPort: 8080 protocol: TCP
مانیفست را از پوسته ابری روی خوشه خود اعمال کنید
kubectl apply -f my-service.yaml
ServiceAttachment ایجاد کنید
مانیفست زیر یک ServiceAttachment را توصیف میکند که سرویسی را که ایجاد کردهاید در اختیار مصرفکنندگان خدمات قرار میدهد. مانیفست را به عنوان my-psc.yaml از پوسته ابری ذخیره کنید.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
مانیفست را از پوسته ابری روی خوشه خود اعمال کنید
kubectl apply -f my-psc.yaml
ServiceAttachment دارای فیلدهای زیر است:
- ConnectionPreference: اولویت اتصال که نحوه اتصال مشتریان به سرویس را تعیین می کند. میتوانید از تأیید خودکار پروژه با استفاده از ACCEPT_AUTOMATIC یا تأیید صریح پروژه با استفاده از ACCEPT_MANUAL استفاده کنید. برای اطلاعات بیشتر، به انتشار خدمات با استفاده از Private Service Connect مراجعه کنید.
- natSubnets : فهرستی از نام منابع زیرشبکه برای استفاده برای پیوست سرویس.
- پروکسی پروتکل: وقتی روی true تنظیم شود، IP منبع مصرف کننده و شناسه اتصال اتصال سرویس خصوصی در درخواست ها موجود است. این فیلد اختیاری است و در صورت عدم ارائه به صورت پیش فرض false است.
- customersAllowList: لیستی از پروژه های مصرف کننده که مجاز به اتصال به ServiceAttachment هستند. این فیلد فقط زمانی قابل استفاده است که ConnectionPreference ACCEPT_MANUAL باشد. برای اطلاعات بیشتر درباره این فیلد و گزینههای دیگر، به خدمات انتشار با استفاده از Private Service Connect مراجعه کنید.
اعتبار سنجی تولید کننده
مشاهده جزئیات پیوست سرویس
می توانید جزئیات یک ServiceAttachment را با استفاده از دستور زیر از پوسته ابری مشاهده کنید
kubectl describe serviceattachment emoji-sa
GKE L4 ILB را مشاهده کنید
از کنسول ابری، به خدمات شبکه ← تعادل بار ← Frontends بروید
آدرس IP frontend را که با زیرشبکه نود تعریف شده قبلی 192.168.10.0/24 تراز می شود، شناسایی کنید، به اسکرین شات زیر توجه کنید، آدرس IP شما ممکن است متفاوت باشد.
سرویس منتشر شده را مشاهده کنید
از کنسول ابری، به خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده بروید
سرویس را با شبکه مورد استفاده در آزمایشگاه شناسایی کنید، gke-producer-l4-vpc، اسکرین شات زیر را یادداشت کنید، اگرچه مقادیر Service و Target شما ممکن است متفاوت باشد
روی نام سرویسی که شما را به صفحه زیر هدایت می کند، کلیک کنید، به جزئیات پیوست سرویس که در اطلاعات پایه اضافه شده است توجه کنید. همچنین، توجه داشته باشید که "پروژه های متصل" خالی است زیرا مصرف کننده هنوز در این سرویس ثبت نام نکرده است. ACCEPT و REJECT خاکستری باقی میمانند زیرا اولویت اتصال روی "ACCEPT_AUTOMATICALLY" تنظیم شده است، این گزینه را میتوان در هر زمان با تغییر یامل پیوست سرویس (my-psc.yaml) به "ACCEPT_MANUAL" تغییر داد.
9. شبکه Consumers VPC ایجاد کنید
در بخش زیر، VPC مصرف کننده در یک پروژه جداگانه پیکربندی شده است. ارتباط بین شبکه مصرف کننده و تولید کننده از طریق پیوست سرویس تعریف شده در شبکه مصرف کنندگان انجام می شود.
Codelab به دو پروژه نیاز دارد، اگرچه برای PSC الزامی نیست. به مراجع برای پشتیبانی از پروژه های تک یا چندگانه توجه کنید.
پروژه واحد - به روز رسانی پروژه برای حمایت از شبکه تولید کننده و مصرف کننده
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
پروژه های متعدد - به روز رسانی پروژه برای حمایت از مصرف کننده یک شبکه
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
شبکه VPC
از Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
یک زیر شبکه برای PSC ایجاد کنید
از Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
یک زیرشبکه برای نمونه های VM ایجاد کنید
از Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
یک آدرس IP ثابت برای دسترسی به سرویس منتشر شده ایجاد کنید
از Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
قوانین فایروال را ایجاد کنید
برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
- به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند
از Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
اگرچه برای PSC لازم نیست، یک قانون فایروال خروجی برای نظارت بر ترافیک PSC مصرف کننده به پیوست سرویس تولیدکننده ایجاد کنید
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. ایجاد نمونه تست مصرف کننده 1
از Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. ایجاد نمونه تست مصرف کننده 2
از Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. یک پیوست سرویس ایجاد کنید
در مرحله قبل، رشته پیوست سرویس تولیدکننده را در مکانی امن کپی کردید، بیایید مقدار ذخیره شده را در قسمت "target-service-attachment" درج کنیم.
از Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. اعتبارسنجی - مصرف کننده
ما از گزارشهای CURL و فایروال برای تأیید ارتباط مصرفکننده و تولیدکننده استفاده خواهیم کرد.
در پروژه مصرف کننده از آدرس های IP ثابت برای ایجاد ارتباط با تولید کننده استفاده می شود. این نگاشت آدرس IP استاتیک به قانون حمل و نقل مصرف کننده با انجام دستور زیر تأیید می شود.
از پوسته استفاده از Consumer VPCs Cloud قانون حمل و نقل و IP استاتیک را شناسایی کنید
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
خروجی زیر، ما از 10.0.60.100 استفاده می کنیم تا در مرحله بعد به تولید کننده برسیم.
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
سرویس متصل را مشاهده کنید
از کنسول ابری، به خدمات شبکه → اتصال سرویس خصوصی → نقاط پایانی متصل بروید و نقطه پایانی تازه ایجاد شده را مشاهده کنید.
اجازه می دهد تا وارد Consumer-instance-1 شویم و دسترسی به سرویس منتشر شده تولید کننده را آزمایش کنیم
از پوسته ابری با کلیک بر روی + یک تب جدید باز کنید
از پوسته ابری موارد زیر را انجام دهید:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
پس از وارد شدن به نمونه مصرف کننده-نمونه-1، در مقابل قانون حمل و نقل، آدرس IP 10.0.60.100 را انجام دهید.
از پوسته ابری موارد زیر را انجام دهید:
user@consumer-instance-1:~$ curl 10.0.60.100
خروجی نمونه
user@consumer-instance-1:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal", "pod_name": "psc-ilb-588887dfdb-w7tbr", "pod_name_emoji": "🤷", "project_id": "prodorijectid", "timestamp": "2021-10-01T17:43:37", "zone": "us-central1-a"
اجازه میدهد وارد Consumer-instance-2 شویم و دسترسی به سرویس منتشر شده تولیدکننده را آزمایش کنیم
از پوسته ابری با کلیک بر روی + یک تب جدید باز کنید
از پوسته ابری موارد زیر را انجام دهید:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
از پوسته ابری موارد زیر را انجام دهید:
user@consumer-instance-2:~$ curl 10.0.60.100
خروجی نمونه
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal", "pod_name": "psc-ilb-588887dfdb-4jdql", "pod_name_emoji": "🧑🏿", "project_id": "prodproject", "timestamp": "2021-10-01T17:49:51", "zone": "us-central1-a"
14. ورود به سیستم فایروال - اعتبار سنجی اختصاص داده شده
با استفاده از قانون فایروال اعتبارسنجی Logs Explorer "vpc-consumner-psc" جریان بین نمونه VM و IP استاتیک را ضبط می کند.
- از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
- در قسمت Query ورودی زیر را با yourconsumerproject به روز کنید و "Run Query" را انتخاب کنید
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد
- گزارش را گسترش دهید (jsonPayload → Connection) و خروجی ارائه شده در زیر را شناسایی کنید. به dest_ip توجه کنید: 10.0.60.100 IP STATIC TCP است که برای دسترسی به سرویس تولیدکننده استفاده می شود و src_ip: 10.0.70.10 یا 10.0.70.20 آدرس(های IP) نمونه VM هستند. واگذاری مجاز است.
15. اعتبار سنجی - تولید کننده
از پروژه Producers تأیید کنید که پیوست سرویس با موفقیت وصل شده است. به خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده بروید
روی این سرویس کلیک کنید، پروژه و وضعیت مصرف کننده متصل شما را همانطور که در زیر نشان داده شده است نشان می دهد
16. دسترسی به یک سرویس منتشر شده را محدود کنید
تاکنون تأیید کردهایم که هر دو نمونه به سرویسهای منتشر شده دسترسی دارند، بیایید یک قانون فایروال Egress ایجاد کنیم تا دسترسی مصرفکننده نمونه-2 به سرویس منتشر شده را رد کنیم.
بهطور پیشفرض GCP به همه Egress اجازه میدهد اما همه ترافیک ورودی را رد میکند. در مراحل بعدی، یک قانون فایروال را بر اساس یک تگ شبکه تعریف شده قبلی «google2» ایجاد خواهیم کرد که در هنگام ایجاد consumer-instance-2 برای جلوگیری از دسترسی به سرویس منتشر شده استفاده می شود.
با کلیک بر روی + اجرای قانون فایروال زیر در پوسته ابری، یک تب جدید پوسته ابری باز کنید
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
اکنون، بیایید آزمایش کنیم که آیا customers-instance-2 قادر به دسترسی به سرویس منتشر شده است یا خیر. اگر زمان جلسه شما تمام شد، باید یک پوسته ابری + جدید باز کنید و همانطور که در زیر توضیح داده شده است وارد VM شوید.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
از پوسته ابری موارد زیر را انجام دهید:
user@consumer-instance-2:~$ curl 10.0.60.100
خروجی نمونه
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
ورود به سیستم فایروال - تأیید اعتبار رد شد
با استفاده از قانون فایروال اعتبارسنجی Logs Explorer "psc-endpoint-deny-egress" جریان بین نمونه VM و IP استاتیک را ضبط می کند.
- از Cloud Console، Loging عملیات → Log Explorer را شناسایی کنید
- در قسمت Query ورودی زیر را با yourconsumerproject به روز کنید و "Run Query" را انتخاب کنید
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- نتایج پرس و جو در هر اسکرین شات ارائه شده موارد زیر را ارائه می دهد
- گزارش را گسترش دهید و خروجی ارائه شده در زیر را شناسایی کنید. به dest_ip توجه کنید: 10.0.60.100 IP STATIC TCP و src_ip: 10.0.70.10 یا 10.0.70.20 آدرس(های IP) نمونه VM هستند. انکار می شود.
17. مراحل پاکسازی
مراحل پاکسازی شبکه تولیدکننده
از یک پوسته ابری در ترمینال پروژه Producer، اجزای آزمایشگاه را حذف کنید
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet
مراحل پاکسازی شبکه مصرف کننده
از یک پوسته ابری در ترمینال پروژه مصرف کننده، اجزای آزمایشگاه را حذف کنید
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. تبریک!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- مزایای اتصال سرویس خصوصی
- مفاهیم کلیدی برای مصرف کنندگان خدمات
- مفاهیم کلیدی برای تولیدکنندگان خدمات
- یک محیط تولید کننده ایجاد کنید
- خدمات (محیط تولیدکننده) را از طریق پیوست سرویس در معرض دید قرار دهید
- یک محیط مصرف کننده ایجاد کنید
- یک قانون حمل و نقل در شبکه مصرف کننده ایجاد کنید
- اعتبار دسترسی مصرف کننده
- کنترل دسترسی خط مشی را فعال کنید
- از یک قانون فایروال خروجی برای مسدود کردن دسترسی به قانون حمل و نقل مصرف کننده استفاده کرد