1. Wprowadzenie
Private Service Connect umożliwia producentowi usługi oferowanie usług w sposób prywatny konsumentowi usługi. Usługa Private Service Connect zapewnia te korzyści:
- Sieć VPC producenta usługi może obsługiwać więcej niż jednego konsumenta usługi.
- Każdy odbiorca łączy się z wewnętrznym adresem IP, który sam określa. Private Service Connect wykonuje translację adresów sieciowych (NAT), aby kierować żądanie do producenta usługi.

Rysunek 2. Usługa Private Service Connect używa punktów końcowych i przyłączy usługi, aby umożliwić konsumentom usług wysyłanie ruchu z sieci VPC konsumenta do usług w sieci VPC producenta usługi (kliknij, aby powiększyć).
Czego się nauczysz
- Korzyści z Private Service Connect
- Kluczowe pojęcia dotyczące konsumentów usług
- Kluczowe pojęcia dla producentów usług
- Tworzenie środowiska producenta
- Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
- Tworzenie środowiska konsumenckiego
- Tworzenie reguły przekierowania w sieci konsumenckiej
- Sprawdzanie dostępu konsumenta
- Włączanie kontroli dostępu do zasad
- Blokowanie dostępu do reguły przekierowania dla użytkowników indywidualnych za pomocą reguły zapory sieciowej dotyczącej ruchu wychodzącego
Czego potrzebujesz
- Znajomość wdrażania klastrów i usług GKE
- Znajomość wewnętrznych systemów równoważenia obciążenia
- Możliwość tworzenia sieci VPC w 2 projektach
- Możliwość tworzenia klastra GKE
2. Korzyści z Private Service Connect
W porównaniu z połączeniem równorzędnym VPC PSC ma kilka zalet:
Lepsza kontrola nad przestrzenią prywatnych adresów IP
- Jako konsument usługi możesz kontrolować prywatny adres IP używany do łączenia się z usługą zarządzaną, do której chcesz uzyskać dostęp.
- Jako konsument usługi nie musisz rezerwować zakresów prywatnych adresów IP dla usług backendu, które są używane w Twojej sieci VPC. Aby połączyć się z usługami producenta, wystarczy wybrać adres IP z własnej podsieci.
- Jako producent usługi możesz wdrożyć model wielodostępny, w którym sieć VPC zawiera usługi obsługujące wiele sieci VPC konsumentów. Klienci z nakładającymi się zakresami podsieci nie stanowią już problemu.
- Jako dostawca usług możesz skalować usługę do dowolnej liczby instancji maszyn wirtualnych bez konieczności kontaktowania się z klientem w celu uzyskania większej liczby adresów IP.
Większe bezpieczeństwo i izolacja
- Jako konsument usługi możesz zainicjować komunikację z producentem usługi. To jednokierunkowe połączenie znacznie upraszcza konfigurację zapory sieciowej, a także zmniejsza ryzyko związane z nieautoryzowanym ruchem pochodzącym od producenta usługi.
- Jako producent usługi nie musisz zmieniać reguł zapory sieciowej na podstawie zakresów podsieci w sieci VPC konsumenta. Możesz po prostu utworzyć reguły zapory sieciowej dla zakresu adresów IP NAT skonfigurowanego dla Twojej usługi.
Lepsza skalowalność
- PSC umożliwia projektowanie wysoce skalowalnych rozwiązań, ponieważ obsługuje tysiące odbiorców, a także pozwala producentom usług oferować wysoce skalowalne usługi wielodostępne lub jednostkowe.
- Jako konsument usługi korzystający z usługi Private Service Connect możesz tworzyć w sieci VPC potrzebne zasoby. Skala tego działania nie zależy od liczby takich zasobów utworzonych w sieci VPC producenta.
3. Kluczowe pojęcia dotyczące konsumentów usług
Możesz używać punktów końcowych Private Service Connect do korzystania z usług, które znajdują się poza Twoją siecią VPC. Klienci usług tworzą punkty końcowe Private Service Connect, które łączą się z usługą docelową.
Punkty końcowe
Do łączenia się z usługą docelową używasz punktów końcowych Private Service Connect. Punkty końcowe mają wewnętrzny adres IP w sieci VPC i są oparte na zasobie reguły przekierowania.
Wysyłasz ruch do punktu końcowego, który przekazuje go do miejsc docelowych poza siecią VPC.
Cele
Punkty końcowe Private Service Connect mają cel, czyli usługę, z którą chcesz się połączyć:
- Pakiet interfejsów API:
- Wszystkie interfejsy API: większość interfejsów API Google
- VPC-SC: interfejsy API obsługiwane przez ustawienia usługi VPC
- Opublikowana usługa w innej sieci VPC. Usługą może zarządzać Twoja organizacja lub osoba trzecia.
Opublikowana usługa
Aby połączyć punkt końcowy z usługą producenta usługi, potrzebujesz przyłącza usługi. Identyfikator URI przyłącza usługi ma ten format: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Kluczowe pojęcia dla producentów usług
Aby udostępnić usługę konsumentom, utwórz co najmniej 1 dedykowaną podsieć do translacji adresów sieciowych (NAT) adresów IP konsumentów. Następnie tworzysz przyłącze usługi, które odwołuje się do tych podsieci.
Podsieci Private Service Connect
Aby udostępnić usługę, producent usługi najpierw tworzy co najmniej jedną podsieć z przeznaczeniem Private Service Connect.
Gdy żądanie jest wysyłane z sieci VPC konsumenta, źródłowy adres IP konsumenta jest tłumaczony za pomocą źródłowego NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.
Jeśli chcesz zachować informacje o adresie IP połączenia użytkownika, przeczytaj artykuł Wyświetlanie informacji o połączeniu użytkownika.
Tych podsieci nie można używać w przypadku zasobów takich jak instancje maszyn wirtualnych czy reguły przekazywania. Podsieci są używane tylko do udostępniania adresów IP na potrzeby SNAT przychodzących połączeń konsumenckich.
Podsieć Private Service Connect musi zawierać co najmniej 1 adres IP na każde 63 maszyny wirtualne konsumenta,aby każda maszyna wirtualna konsumenta miała przydzielone 1024 krotki źródłowe na potrzeby translacji adresów sieciowych.
Minimalny rozmiar podsieci Private Service Connect to /24.
Załączniki do usługi
Producenci usług udostępniają swoje usługi za pomocą przyłącza usługi.
- Aby udostępnić usługę, producent usługi tworzy przyłącze usługi, które odwołuje się do reguły przekierowania systemu równoważenia obciążenia usługi.
- Aby uzyskać dostęp do usługi, konsument usługi tworzy punkt końcowy, który odwołuje się do przyłącza usługi.
Ustawienia połączeń
Podczas tworzenia usługi wybierasz sposób jej udostępniania. Możesz wybrać jedną z dwóch opcj:
- Automatycznie akceptuj połączenia we wszystkich projektach – każdy konsument usługi może skonfigurować punkt końcowy i automatycznie połączyć się z usługą.
- Akceptuj połączenia w wybranych projektach – konsumenci usług konfigurują punkt końcowy, aby połączyć się z usługą, a producent usługi akceptuje lub odrzuca żądania połączenia.
Wymagania i ograniczenia
- Obowiązują ograniczenia dotyczące Private Service Connect.
- Możesz utworzyć połączenie z usługą w GKE w wersji 1.21.4-gke.300 i nowszych.
- Nie możesz używać tej samej podsieci w wielu konfiguracjach połączenia z usługą.
- Musisz utworzyć usługę GKE, która korzysta z wewnętrznego systemu równoważenia obciążenia TCP/UDP.
5. Środowisko testowe
Sieć konsumenta składa się ze statycznego adresu IP używanego do wysyłania żądań do producenta usługi, a także z docelowego połączenia z usługą, które jest mapowane na połączenie z usługą producenta (opublikowaną usługę).

Przyjrzyjmy się teraz sieci producentów. Zwróć uwagę, że sieć producenta nie jest mapowana na sieć konsumenta. Zamiast tego zawiera ona przyłączenie usługi (opublikowaną usługę), która jest używana przez konsumenta do obsługi usług. Załącznik usługi producenta jest udostępniany przez wewnętrzny system równoważenia obciążenia L4 GKE Ingress (opublikowaną usługę), co umożliwia komunikację z podami GKE i powiązanymi aplikacjami.
Podsieć NAT jest używana, gdy żądanie jest wysyłane z sieci VPC konsumenta. Adres IP źródła konsumenta jest tłumaczony za pomocą źródłowego NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.
Tych podsieci nie można używać w przypadku zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane tylko do udostępniania adresów IP na potrzeby SNAT przychodzących połączeń konsumenckich.
Aby dowiedzieć się więcej o usłudze L4ILB w przypadku usługi Private Service Connect w GKE i uzyskać bezpośredni dostęp do treści użytych w tym laboratorium, zapoznaj się z tym artykułem.
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości modułów z kodem musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”. - Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
6. Zanim zaczniesz
Codelab wymaga 2 projektów, ale nie jest to wymagane w przypadku PSC. Zwróć uwagę na odwołania do jednego lub wielu projektów.
Jeden projekt – aktualizacja projektu w celu obsługi sieci producenta i konsumenta
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Wiele projektów – aktualizowanie projektu w celu obsługi sieci producenta
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Zwróć uwagę na tę konwencję kolorowania kodu:

7. Tworzenie sieci VPC producentów

Sieć VPC
Z Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Tworzenie podsieci klastra GKE
Z 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
Tworzenie klastra GKE
Z 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
Tworzenie podsieci na potrzeby usługi Private Service Connect (podsieć NAT)
Musisz utworzyć co najmniej jedną dedykowaną podsieć do użycia z usługą Private Service Connect. Jeśli do publikowania usługi używasz konsoli Google Cloud, możesz utworzyć podsieci w trakcie tej procedury.
Więcej informacji o podsieciach Private Service Connect znajdziesz w artykule Podsieci Private Service Connect.
Z 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. Wdrażanie zadań i usług
Poniższy plik manifestu opisuje wdrożenie, które uruchamia przykładowy obraz kontenera aplikacji internetowej. Zapisz plik manifestu jako my-deployment.yaml w powłoce Cloud Shell.
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
Zastosuj plik manifestu do klastra z poziomu Cloud Shell
kubectl apply -f my-deployment.yaml
Tworzenie usługi
Poniższy plik manifestu opisuje usługę, która tworzy wewnętrzny system równoważenia obciążenia TCP/UDP na porcie TCP 8080. Zapisz plik manifestu jako my-service.yaml w powłoce Cloud Shell.
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
Zastosuj plik manifestu do klastra z poziomu Cloud Shell
kubectl apply -f my-service.yaml
Utwórz ServiceAttachment
Poniższy plik manifestu opisuje element ServiceAttachment, który udostępnia utworzoną usługę konsumentom usług. Zapisz manifest jako my-psc.yaml w Cloud Shell.
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
Zastosuj plik manifestu do klastra z poziomu Cloud Shell
kubectl apply -f my-psc.yaml
ServiceAttachment ma te pola:
- connectionPreference: preferencje połączenia, które określają, jak klienci łączą się z usługą. Możesz użyć automatycznego zatwierdzania projektu za pomocą wartości ACCEPT_AUTOMATIC lub jawnego zatwierdzania projektu za pomocą wartości ACCEPT_MANUAL. Więcej informacji znajdziesz w artykule Publikowanie usług za pomocą Private Service Connect.
- natSubnets: lista nazw zasobów podsieci, które mają być używane w przypadku połączenia z usługą.
- proxyProtocol: jeśli ma wartość „true”, w żądaniach dostępne są źródłowy adres IP klienta i identyfikator połączenia Private Service Connect. To pole jest opcjonalne. Jeśli nie zostanie podana żadna wartość, domyślnie przyjmuje wartość false.
- consumerAllowList: lista projektów konsumentów, które mogą łączyć się z ServiceAttachment. Tego pola można używać tylko wtedy, gdy wartość parametru connectionPreference to ACCEPT_MANUAL. Więcej informacji o tym polu i innych opcjach znajdziesz w artykule Publikowanie usług za pomocą usługi Private Service Connect.
Weryfikacja producenta
Wyświetlanie szczegółów przyłączenia usługi
Szczegóły elementu ServiceAttachment możesz wyświetlić za pomocą tego polecenia w Cloud Shell:
kubectl describe serviceattachment emoji-sa
Wyświetl GKE L4 ILB
W konsoli Cloud otwórz Usługi sieciowe → Równoważenie obciążenia → Interfejsy.
Określ adres IP frontendu, który jest zgodny z wcześniej zdefiniowaną podsiecią węzła 192.168.10.0/24. Zwróć uwagę na zrzut ekranu poniżej. Twój adres IP może być inny.

Wyświetlanie opublikowanej usługi
W konsoli Google Cloud otwórz kolejno Usługi sieciowe → Private Service Connect → Opublikowane usługi.
Zidentyfikuj usługę z siecią używaną w tym module, gke-producer-l4-vpc, (zobacz zrzut ekranu poniżej, chociaż wartości Usługa i Cel mogą się różnić).

Kliknij nazwę usługi, aby przejść do ekranu poniżej. Zwróć uwagę na szczegóły załącznika usługi w sekcji Podstawowe informacje. Zauważ też, że sekcja „Połączone projekty” jest pusta, ponieważ konsument nie zarejestrował się jeszcze w usłudze. Przyciski AKCEPTUJ i ODRZUC pozostaną wyszarzone, ponieważ preferencje połączenia są ustawione na „ACCEPT_AUTOMATICALLY”. Tę opcję można w każdej chwili zmienić na „ACCEPT_MANUAL”, modyfikując plik YAML przyłącza usługi (my-psc.yaml).


9. Tworzenie sieci VPC konsumentów

W sekcji poniżej sieć VPC konsumenta jest konfigurowana w osobnym projekcie. Komunikacja między siecią konsumenta a siecią producenta odbywa się za pomocą przyłącza usługi zdefiniowanego w sieci konsumenta.
Codelab wymaga 2 projektów, ale nie jest to wymagane w przypadku PSC. Zwróć uwagę na odwołania do jednego lub wielu projektów.
Jeden projekt – aktualizacja projektu w celu obsługi sieci producenta i konsumenta
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Wiele projektów – aktualizowanie projektu w celu obsługi sieci konsumenckiej
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Sieć VPC
Z Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Tworzenie podsieci dla PSC
Z Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Tworzenie podsieci dla instancji maszyn wirtualnych
Z 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
Utwórz statyczny adres IP, aby uzyskać dostęp do opublikowanej usługi
Z Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Tworzenie reguł zapory sieciowej
Aby umożliwić IAP połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.
Z 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
Chociaż nie jest to wymagane w przypadku PSC, utwórz regułę zapory sieciowej ruchu wychodzącego, aby monitorować ruch PSC konsumenta do przyłącza usługi producenta.
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. Tworzenie instancji testowej konsumenta 1
Z 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. Tworzenie instancji testowej klienta 2
Z 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. Tworzenie przyłącza usługi
W poprzednim kroku skopiowaliśmy ciąg Producer Service Attachment i zapisaliśmy go w bezpiecznym miejscu. Wstawmy teraz zapisaną wartość w polu „target-service-attachment”.

Z 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. Weryfikacja – konsument
Do weryfikacji komunikacji między konsumentem a producentem będziemy używać dzienników CURL i zapory sieciowej.
W projekcie konsumenta statyczne adresy IP są używane do inicjowania komunikacji z producentem. To mapowanie statycznego adresu IP na regułę przekierowania dla konsumentów jest weryfikowane za pomocą poniższej składni.

W środowisku Cloud Shell w sieciach VPC klienta znajdź regułę przekierowania i statyczny adres IP.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
W danych wyjściowych poniżej użyjemy adresu 10.0.60.100, aby w późniejszym kroku skontaktować się z producentem.
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
Wyświetlanie połączonej usługi
W konsoli Google Cloud otwórz kolejno Usługi sieciowe → Private Service Connect → Połączone punkty końcowe i wyświetl nowo utworzony punkt końcowy.

Zalogujmy się w consumer-instance-1 i przetestujmy dostęp do usługi opublikowanej przez producenta.
W Cloud Shell otwórz nową kartę, klikając +.

W Cloud Shell wykonaj te czynności:
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"
Po zalogowaniu się w instancji consumer-instance-1 wykonaj polecenie curl na adresie IP reguły przekierowania 10.0.60.100.
W Cloud Shell wykonaj te czynności:
user@consumer-instance-1:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
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"
Zalogujmy się w consumer-instance-2 i przetestujmy dostęp do usługi opublikowanej przez producenta.
W Cloud Shell otwórz nową kartę, klikając +.

W Cloud Shell wykonaj te czynności:
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"
W Cloud Shell wykonaj te czynności:
user@consumer-instance-2:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
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. Logowanie zapory sieciowej – przydzielona weryfikacja
Za pomocą Eksploratora logów sprawdź, czy reguła zapory sieciowej „vpc-consumner-psc” rejestruje przepływ między instancją maszyny wirtualnej a statycznym adresem IP.
- W konsoli Cloud wybierz Logowanie operacji → Eksplorator logów.
- W polu Zapytanie zastąp wpis poniżej ciągiem yourconsumerproject i kliknij „Uruchom zapytanie”.
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Wyniki zapytania zawierają te informacje na podstawie przesłanego zrzutu ekranu:

- Rozwiń log (jsonPayload → Connection) i zidentyfikuj dane wyjściowe podane poniżej. Zwróć uwagę na dest_ip: 10.0.60.100 to STATYCZNY adres IP TCP używany do uzyskiwania dostępu do usługi Producer Service, a src_ip: 10.0.70.10 lub 10.0.70.20 to adresy IP instancji maszyny wirtualnej. Dyspozycja jest dozwolona.

15. Weryfikacja – producent

W projekcie Producent sprawdź, czy przyłącze usługi zostało połączone. Otwórz kolejno Usługi sieciowe → Private Service Connect → Opublikowane usługi.

Kliknięcie usługi spowoduje wyświetlenie połączonego projektu konsumenckiego i jego stanu, jak pokazano poniżej.

16. Ograniczanie dostępu do opublikowanej usługi

Do tej pory potwierdziliśmy, że obie instancje mają dostęp do opublikowanych usług. Utwórzmy regułę zapory sieciowej ruchu wychodzącego, aby odmówić dostępu do opublikowanej usługi instancji consumer-instance-2.
Domyślnie GCP zezwala na cały ruch wychodzący, ale odrzuca cały ruch przychodzący. W kolejnych krokach utworzymy regułę zapory sieciowej na podstawie wcześniej zdefiniowanego tagu sieciowego „google2”, który został użyty podczas tworzenia instancji consumer-instance-2, aby odmówić dostępu do opublikowanej usługi.

Otwórz nową kartę Cloud Shell, klikając +, i wykonaj w niej to polecenie reguły zapory sieciowej:
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
Teraz sprawdźmy, czy consumer-instance-2 ma dostęp do opublikowanej usługi. Jeśli sesja wygasła, musisz otworzyć nową powłokę Cloud Shell + i zalogować się na maszynie wirtualnej zgodnie z poniższymi instrukcjami.
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"
W Cloud Shell wykonaj te czynności:
user@consumer-instance-2:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Logowanie zapory sieciowej – odrzucona weryfikacja
Za pomocą Eksploratora logów sprawdź, czy reguła zapory sieciowej „psc-endpoint-deny-egress” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP.
- W konsoli Cloud wybierz Logowanie operacji → Eksplorator logów.
- W polu Zapytanie zmień wpis poniżej na yourconsumerproject i kliknij „Uruchom zapytanie”.
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Wyniki zapytania zawierają te informacje na podstawie przesłanego zrzutu ekranu:

- Rozwiń log i sprawdź dane wyjściowe podane poniżej. Zwróć uwagę na dest_ip: 10.0.60.100 to statyczny adres IP TCP, a src_ip: 10.0.70.10 lub 10.0.70.20 to adresy IP instancji maszyny wirtualnej. Decyzja to Odrzucono.

17. Procedura czyszczenia
Procedura czyszczenia sieci producenta

Usuwanie komponentów laboratorium z pojedynczej powłoki w terminalu projektu producenta
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

Procedura zwalniania miejsca w sieci konsumenckiej
Usuń komponenty laboratorium z poziomu pojedynczej powłoki w terminalu projektu konsumenckiego.
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. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Korzyści z Private Service Connect
- Kluczowe pojęcia dotyczące konsumentów usług
- Kluczowe pojęcia dla producentów usług
- Tworzenie środowiska producenta
- Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
- Tworzenie środowiska konsumenckiego
- Tworzenie reguły przekierowania w sieci konsumenckiej
- Sprawdzanie dostępu konsumenta
- Włączanie kontroli dostępu do zasad
- Użyto reguły zapory sieciowej dotyczącej ruchu wychodzącego, aby zablokować dostęp do reguły przekierowania dla użytkowników indywidualnych.