Korzystanie z usługi Private Service Connect do publikowania i używania usług w GKE

1. Wprowadzenie

Private Service Connect pozwala producentowi usług oferować prywatne usługi konsumentom usług. Usługa Private Service Connect zapewnia te korzyści:

  • Sieć VPC producenta usług może obsługiwać więcej niż 1 konsumenta usługi.
  • Każdy konsument łączy się ze zdefiniowanym przez siebie wewnętrznym adresem IP. Private Service Connect przeprowadza translację adresów sieciowych (NAT), aby kierować żądanie do producenta usługi.

45b90d50690dd111.png

Rysunek 2. Private Service Connect korzysta z punktów końcowych i przyłączy usług, aby umożliwić konsumentom usługi wysyłanie ruchu z sieci VPC konsumenta do usług w sieci VPC producenta usługi (kliknij, aby powiększyć).

Czego się nauczysz

  • Zalety Private Service Connect
  • Kluczowe pojęcia dla konsumentów usług
  • Najważniejsze pojęcia dla producentów usług
  • Tworzenie środowiska producenta
  • Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
  • Tworzenie środowiska konsumenta
  • Tworzenie reguły przekierowania w sieci konsumenta
  • Weryfikacja dostępu klienta
  • Włącz kontrolę dostępu na podstawie zasad
  • Blokowanie dostępu do reguły przekierowania klienta za pomocą reguły zapory sieciowej dotyczącej ruchu wychodzącego

Czego potrzebujesz

  • Wiedza na temat wdrażania klastrów i usług GKE
  • Wiedza na temat wewnętrznych systemów równoważenia obciążenia
  • Możliwość tworzenia środowisk VPC w 2 projektach
  • Możliwość utworzenia klastra GKE

2. Zalety Private Service Connect

PSC zapewnia kilka korzyści w porównaniu ze stosowaniem połączeń równorzędnych VPC:

Lepsza kontrola nad przestrzenią prywatnych adresów IP

  • Jako konsument usługi masz kontrolę nad prywatnym adresem IP używanym do łączenia się z usługą zarządzaną, do której chcesz mieć dostęp.
  • Jako konsument usług nie musisz się martwić o rezerwowanie zakresów prywatnych adresów IP dla usług backendu używanych w Twojej sieci VPC. Wystarczy wybrać adres IP ze swojej podsieci, aby połączyć się z usługami producenta.
  • Jako producent usług możesz wdrożyć model wielu najemców, w którym Twoje środowisko VPC zawiera usługi obsługujące wiele środowisk VPC konsumenta. Konsumenci z nakładającymi się zakresami podsieci nie stanowią już problemu.
  • Jako dostawca usług możesz przeskalować swoją usługę na dowolną liczbę instancji maszyn wirtualnych bez konieczności kontaktowania się z klientem w celu uzyskania dodatkowych adresów IP.

Większe bezpieczeństwo i izolacja

  • Jako konsument usługi tylko Ty możesz zainicjować komunikację z producentem usługi. Takie połączenie jednokierunkowe drastycznie upraszcza konfigurację zapory sieciowej, ale jednocześnie zmniejsza ryzyko związane z nieuczciwym ruchem pochodzącym od producenta usługi.
  • Jako producent usług 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 wysoką skalowalność projektowania przez obsługę tysięcy konsumentów i pozwala producentom usług oferować wysoce skalowalne usługi obejmujące wielu najemców lub jednego najemcę.
  • Jako konsument usługi używający Private Service Connect możesz tworzyć zasoby zgodnie z wymaganiami w sieci VPC. Na skalę tego zjawiska nie ma wpływu liczba takich zasobów utworzonych w producenta VPC.

3. Kluczowe pojęcia dla konsumentów usług

punktów końcowych usługi Private Service Connect możesz używać do korzystania z usług spoza Twojej sieci VPC. Konsumenci usługi tworzą punkty końcowe Private Service Connect, które łączą się z usługą docelową.

Punkty końcowe

Punkty końcowe Private Service Connect umożliwiają łączenie się z usługą docelową. Punkty końcowe mają wewnętrzny adres IP w Twojej sieci VPC i opierają się na zasobie reguły przekierowania.

Wysyłasz ruch do punktu końcowego, który przekierowuje go do celów poza Twoją siecią VPC.

Cele

Punkty końcowe Private Service Connect mają lokalizację docelową, 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. Tą usługą może zarządzać Twoja organizacja lub inna firma.

Opublikowana usługa

Aby połączyć punkt końcowy z usługą producenta usługi, potrzebujesz przyłącza usługi dla usługi. Identyfikator URI przyłącza usługi ma ten format: projects/PROJEKT_USŁUGI/regions/REGION/serviceAttachments/NAZWA_USŁUGI

4. Najważniejsze pojęcia dla producentów usług

Aby udostępnić usługę klientom, musisz utworzyć co najmniej 1 podsieć, która będzie używana do translacji adresów sieciowych (NAT) konsumenta z adresów IP. Następnie możesz utworzyć przyłącze usługi odwołujące się do tych podsieci.

Podsieci Private Service Connect

Aby udostępnić usługę, producent usługi najpierw tworzy co najmniej 1 podsieć z przeznaczeniem Private Service Connect.

Gdy żądanie jest wysyłane z sieci VPC konsumenta, źródłowy adres IP konsumenta jest przekształcany przy użyciu source NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.

Jeśli chcesz zachować informacje o adresie IP połączenia konsumenta, zapoznaj się z sekcją Wyświetlanie informacji o połączeniu konsumenta.

Tych podsieci nie można używać na potrzeby zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane wyłącznie do udostępniania adresów IP na potrzeby protokołu SNAT dla przychodzących połączeń konsumentów.

Podsieć Private Service Connect musi zawierać co najmniej 1 adres IP na każde 63 maszyny wirtualne,aby każda maszyna wirtualna konsumenta otrzymała 1024 krotki źródłowe na potrzeby translacji adresów sieciowych.

Minimalny rozmiar podsieci Private Service Connect to /24.

Przyłącza usługi

Producenci usług udostępniają swoją usługę za pomocą przyłącza usługi.

  • Aby udostępnić usługę, producent usługi tworzy przyłącze usługi odwołujące się do reguły przekierowania systemu równoważenia obciążenia w usłudze.
  • Aby uzyskać dostęp do usługi, konsument usługi tworzy punkt końcowy odwołujący 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ługi konfigurują punkt końcowy tak, aby łą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.
  • Przyłącze usługi możesz utworzyć w GKE w wersji 1.21.4-gke.300 i nowszych.
  • Nie możesz używać tej samej podsieci w wielu konfiguracjach przyłącza usługi.
  • Musisz utworzyć usługę GKE, która używa 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 przyłącza usługi docelowej, który jest mapowany na przyłącze usługi producenta (opublikowaną usługę).

1ce5607c0c56d77d.jpeg

Przyjrzyjmy się teraz sieci producentów. Zwróć uwagę, że sieć producentów nie ma mapowania na sieć konsumenta. Zamiast tego sieć producentów zawiera przyłącze usługi (opublikowaną usługę) używane przez konsumenta na potrzeby usług. Przyłącze usługi producenta jest udostępniane przez system równoważenia obciążenia L4 L4 dla ruchu przychodzącego (opublikowana usługa), co umożliwia komunikację z podami GKE powiązanych aplikacji.

Podsieć NAT jest używana, gdy żądanie jest wysyłane z sieci VPC konsumenta, a źródłowy adres IP konsumenta jest przekształcany przy użyciu protokołu NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.

Tych podsieci nie można używać na potrzeby zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane wyłącznie do udostępniania adresów IP na potrzeby protokołu SNAT dla przychodzących połączeń konsumentów.

Aby dowiedzieć się więcej o L4ILB dla GKE Private Service Connect i uzyskać bezpośredni dostęp do treści użytych w tym module, zapoznaj się z poniższymi.

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się PROJECT_ID), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy kod lub wypróbuj swój własny i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu.
  • Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

6. Zanim zaczniesz

Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.

Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta

Sprawdź w Cloud Shell, 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 – zaktualizuj projekt, aby wspierać sieć producenta

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
echo $prodproject

Pamiętaj o tej konwencji kolorów:

f251ebb137e37136.png

7. Utwórz sieć VPC producenta

afe738fc869f0d6e.png

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

Utwórz podsieć na potrzeby usługi Private Service Connect (podsieć NAT)

Musisz utworzyć co najmniej 1 dedykowaną podsieć do użytku z usługą Private Service Connect. Jeśli publikujesz usługę w konsoli Google Cloud, możesz podczas tej procedury utworzyć podsieci.

Informacje o podsieciach Private Service Connect znajdziesz w artykule o podsieciach 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 zadania i usług

Poniższy plik manifestu opisuje wdrożenie, w którym uruchamiany jest przykładowy obraz kontenera aplikacji internetowej. Zapisz plik manifestu jako my-deployment.yaml z 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 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 z 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 Cloud Shell

kubectl apply -f my-service.yaml

Utwórz przyłącze usługi

Ten plik manifestu opisuje załącznik ServiceAttachment, który udostępnia utworzoną przez Ciebie usługę konsumentom usług. Zapisz plik manifestu jako my-psc.yaml z 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 Cloud Shell

kubectl apply -f my-psc.yaml

ServiceAttachment zawiera te pola:

  • connectionPreference:ustawienie połączenia określające sposób, w jaki klienci łączą się z usługą. Możesz korzystać z automatycznego zatwierdzania projektów za pomocą metody ACCEPT_AUTOMATIC lub bezpośrednio zatwierdzania projektu za pomocą metody 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 na potrzeby przyłącza usługi.
  • proxyProtocol: jeśli ma wartość Prawda, źródłowy adres IP klienta i identyfikator połączenia Private Service Connect są dostępne w żądaniach. To pole jest opcjonalne i jeśli nie zostanie podane, domyślnie ma wartość Fałsz.
  • consumerAllowList: lista projektów konsumentów, które mogą łączyć się z obiektem ServiceAttachment. Tego pola można używać tylko wtedy, gdy connectionPreference ma wartość ACCEPT_MANUAL. Więcej informacji o tym polu i innych opcjach znajdziesz w artykule Publikowanie usług za pomocą Private Service Connect.

Weryfikacja producenta

Wyświetlanie szczegółów przyłącza usługi

Szczegóły przyłącza usługi możesz wyświetlić za pomocą następującego polecenia z Cloud Shell

kubectl describe serviceattachment emoji-sa

Wyświetl system równoważenia obciążenia L4 GKE

W konsoli Cloud otwórz Usługi sieciowe → Równoważenie obciążenia → Frontendy

Zidentyfikuj adres IP frontendu, który pasuje do wcześniej zdefiniowanej podsieci węzła 192.168.10.0/24 (zwróć uwagę na zrzut ekranu poniżej). Twój adres IP może być inny.

ed7a25ed4774977b.png

Wyświetl opublikowaną usługę

W konsoli Cloud otwórz Usługi sieciowe → Private Service Connect → Opublikowane usługi

Zidentyfikuj usługę z siecią używaną w module (gke-producer-l4-vpc,), zapoznaj się z poniższym zrzutem ekranu. Wartości usługi i celu mogą się różnić.

5a00836ee514b918.png

Kliknij nazwę usługi, aby przejść na poniższy ekran. Zwróć uwagę na szczegóły przyłącza usługi zawarte w informacjach podstawowych. Zwróć też uwagę na „Połączone projekty” jest puste, ponieważ konsument nie zarejestrował się jeszcze w usłudze. Nazwy ACCEPT i ODRZUĆ pozostaną nieaktywne, ponieważ Preferencja połączenia ma wartość "ACCEPT_AUTOMATIVELY". W każdej chwili można zmienić tę opcję na „ACCEPT_MANUAL”, modyfikując plik yaml usługi (my-psc.yaml).

497f5f43920018c0.png

e246063a23771273.png

9. Utwórz sieć VPC klientów

1f3c90f1e139e906.png

W tej sekcji środowisko VPC konsumenta zostało skonfigurowane w oddzielnym projekcie. Komunikacja między siecią konsumenta a siecią producenta odbywa się przez przyłącze usługi zdefiniowane w sieci konsumenta.

Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.

Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta

Sprawdź w Cloud Shell, 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 – zaktualizuj projekt, aby obsługiwać konsumenta sieci

Sprawdź w Cloud Shell, 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

Tworzenie statycznego adresu 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 nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP 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 przez PSC, utworzenie reguły zapory sieciowej dotyczącej ruchu wychodzącego w celu monitorowania ruchu PSC konsumenta do przyłącza usługi producentów

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 1 konsumenta

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 konsumenta 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. Utwórz przyłącze usługi

W poprzednim kroku skopiowaliśmy ciąg znaków załącznika usługi producenta w bezpiecznym miejscu. Wstawmy przechowywaną wartość w polu „target-service-attachment”. .

7abaccc4e24f1ef7.png

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

Wykorzystamy CURL & logów zapory sieciowej do weryfikacji komunikacji między klientem a producentem.

W projekcie klienta statyczne adresy IP służą do inicjowania komunikacji z producentem. Mapowanie statycznego adresu IP na regułę przekierowania klienta jest weryfikowane przez wykonanie tej składni.

1f3c90f1e139e906.png

Z poziomu chmury VPC klienta użyj powłoki, aby zidentyfikować regułę przekierowania i statyczny adres IP.

gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1

Podane niżej dane wyjściowe użyjemy 10.0.60.100, aby skontaktować się z producentem na późniejszym etapie

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 Cloud otwórz Usługi sieciowe → Private Service Connect → Połączone punkty końcowe wyświetl nowo utworzony punkt końcowy

206bc00297aaa260.png

Zalogujmy się w consumer-instance-1 i przetestujemy dostęp do usługi Producer Opublikowano.

W Cloud Shell otwórz nową kartę, klikając przycisk +

81f3210b29faebd3.png

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 customer-instance-1 wykorzystuj curl do adresu 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 przetestujemy dostęp do usługi Producer Publish Service.

W Cloud Shell otwórz nową kartę, klikając przycisk +

81f3210b29faebd3.png

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 – walidacja przydzielona

Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „vpc-consumner-psc” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP

  1. W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
  2. W polu Zapytanie uzupełnij poniższy wpis o treści yourconsumerproject i wybierz „Uruchom zapytanie”

logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu

23e427b3060473.png

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

2669743fd1f1cb0d.png

15. Weryfikacja – producent

afe738fc869f0d6e.png

Z poziomu projektu Producers sprawdź, czy przyłącze usługi jest prawidłowo połączone. Przejdź do usług sieciowych → Private Service Connect → Opublikowane usługi

89ded87a63888f60.png

Kliknięcie usługi spowoduje wyświetlenie połączonego projektu konsumenta i jego stanu, tak jak na ilustracji poniżej

15966d47423ebc5f.png

16. Ograniczanie dostępu do opublikowanej usługi

1f3c90f1e139e906.png

Na razie potwierdziliśmy, że obie instancje mają dostęp do opublikowanych usług. Utwórzmy regułę zapory sieciowej ruchu wychodzącego, która zablokuje dostęp consumer-instance-2 do opublikowanej usługi.

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” używany podczas tworzenia instancji Consumer-instance-2 w celu odmowy dostępu do opublikowanej usługi.

7fa2cda1dfec33a

Otwórz nową kartę Cloud Shell, klikając + wykonaj tę regułę zapory sieciowej w Cloud Shell

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

Sprawdźmy teraz, czy consumer-instance-2 ma dostęp do opublikowanej usługi. Jeśli sesja przekroczyła limit czasu, musisz otworzyć nową powłokę Cloud Shell i zalogować się do maszyny wirtualnej w sposób opisany poniżej.

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 – odmowa weryfikacja

Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „psc-endpoint-deny-egress” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP

  1. W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
  2. W polu Zapytanie zaktualizuj poniższy wpis przy użyciu swojego projektu klienta i wybierz „Uruchom zapytanie”

logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")

  1. Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu

83b4fc7348ac93cd.png

  1. Rozwiń dziennik i znajdź widoczne poniżej dane wyjściowe. Zanotuj parametr dest_ip: 10.0.60.100 to STATYCZNY adres IP TCP, a pole src_ip: 10.0.70.10 lub 10.0.70.20 to adresy IP instancji maszyny wirtualnej. Dyspozycja jest odrzucona.

a344f75f67590655.png

17. Procedura czyszczenia

Kroki czyszczenia sieci producenta

afe738fc869f0d6e.png

Z pojedynczej powłoki Cloud Shell w terminalu projektu Producer, usuń komponenty modułu

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

1f3c90f1e139e906.png

Kroki czyszczenia sieci klienta

Z pojedynczej powłoki Cloud Shell w terminalu projektu klienta – usuwanie komponentów modułu

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 ćwiczeń z programowania.

Omówione zagadnienia

  • Zalety Private Service Connect
  • Kluczowe pojęcia dla konsumentów usług
  • Najważniejsze pojęcia dla producentów usług
  • Tworzenie środowiska producenta
  • Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
  • Tworzenie środowiska konsumenta
  • Tworzenie reguły przekierowania w sieci konsumenta
  • Weryfikacja dostępu klienta
  • Włącz kontrolę dostępu na podstawie zasad
  • Użycie reguły zapory sieciowej dotyczącej ruchu wychodzącego do zablokowania dostępu do reguły przekierowania klienta