W tym samouczku pokazano, jak za pomocą Google Kubernetes Engine (GKE) udostępnić swoją aplikację internetową w Internecie za pomocą statycznego zewnętrznego adresu IP i skonfigurować nazwę domeny tak, aby wskazywała aplikację W tym samouczku założono, że jesteś właścicielem zarejestrowanej nazwy domeny, takiej jak przyklad.com Możesz zarejestrować nazwę domeny za pośrednictwem Google Domains lub innego rejestratora Twoich domen wybór, jeśli go nie masz ## Cele W tym samouczku przedstawiono następujące kroki: ## Koszty W tym samouczku są używane następujące płatne komponenty usługi Google Cloud: Aby wygenerować kosztorys na podstawie przewidywanego użycia, skorzystaj z kalkulatora cen Po ukończeniu tego samouczka możesz uniknąć ciągłego rozliczania, usuwając utworzone zasoby. Aby uzyskać więcej informacji, zobacz Czyszczenie ## Zanim zaczniesz Wykonaj następujące czynności, aby włączyć interfejs Kubernetes Engine API: - Odwiedź stronę Kubernetes Engine w konsoli Google Cloud - Utwórz lub wybierz projekt - Poczekaj na włączenie interfejsu API i powiązanych usług. Może to potrwać kilka minut - Upewnij się, że rozliczenia są włączone dla Twojego projektu Cloud. Dowiedz się, jak sprawdzić, czy rozliczenia są włączone w projekcie Zainstaluj następujące narzędzia wiersza polecenia używane w tym samouczku: - gcloudis używane do tworzenia i usuwania klastrów Kubernetes Engine gcloudis zawarte w gcloudCLI - kubectlis używany do zarządzania Kubernetes, systemem orkiestracji klastrów używanym przez Kubernetes Engine. Możesz zainstalować kubectlusing gcloud: komponenty gcloud instalują kubectl Sklonuj przykładowy kod z GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Ustaw wartości domyślne dla Aby zaoszczędzić czas, wpisując identyfikator projektu i opcje strefy Compute Engine w narzędzie wiersza poleceń gcloud gcloud wiersza poleceń, możesz ustawić wartości domyślne: projekt zestawu konfiguracyjnego gcloud konfiguracja projektu idgcloud ustaw strefę obliczeniową/strefę obliczeniową Utwórz klaster Utwórz klaster kontenerów o nazwie domain-test, aby wdrożyć aplikację internetową: klastry kontenerów gcloud tworzą test domeny ## Wdrażanie aplikacji internetowej Poniższy manifest opisuje wdrożenie, które uruchamia przykładowy obraz kontenera aplikacji internetowej: # Copyright 2021 Google LLC # # Licencja na podstawie licencji Apache, wersja 2.0 („Licencja # nie możesz używać tego pliku, chyba że jest to zgodne z licencją. # Kopię licencji można uzyskać pod adresem # # httpwww.apache.org /licenses/LICENSE-2.0 # # O ile nie jest to wymagane przez obowiązujące prawo lub nie uzgodniono tego na piśmie, oprogramowanie # rozpowszechniane na podstawie Licencji jest rozpowszechniane na zasadzie "TAK JAK JEST", # BEZ ŻADNYCH GWARANCJI ANI WARUNKÓW JAKIEGOKOLWIEK RODZAJU, wyraźnych lub dorozumianych. # Zapoznaj się z Licencją, aby zapoznać się z uprawnieniami i # ograniczeniami dotyczącymi konkretnego języka. etykiety: aplikacja: hello warstwa: specyfikacja internetowa: kontenery: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 zasoby: żądania : procesor: 200m Uruchom następujące polecenie, aby utworzyć obraz stanowiska: kubectl Apply -f helloweb-deployment.yaml ## Ujawnianie aplikacji Możesz udostępnić swoją aplikację w GKE, korzystając z jednej z następujących metod: Użyj usługi, która tworzy moduł równoważenia obciążenia sieciowego TCP, który działa z regionalnymi adresami IP. Użyj ruchu przychodzącego, który tworzy moduł równoważenia obciążenia HTTP(S) i obsługuje globalne adresy IP Aby dowiedzieć się więcej o zaletach i wadach każdej metody, zapoznaj się z artykułem Konfigurowanie równoważenia obciążenia HTTP(S) za pomocą Ingress Skorzystaj z usługi Aby upewnić się, że Twoja aplikacja ma statyczny publiczny adres IP, musisz zarezerwować statyczny adres IP Jeśli zdecydujesz się udostępnić swoją aplikację za pomocą usługi, musisz utworzyć regionalny adres IP. Globalne adresy IP działają tylko z typem zasobu Ingress, jak wyjaśniono w następnej sekcji Aby skorzystać z Usługi, utwórz statyczny adres IP o nazwie helloweb-ip w region us-central1: gcloud adresy gcloud compute tworzą helloweb-ip --region us-central1 Aby znaleźć utworzony statyczny adres IP, uruchom następujące polecenie: Adresy obliczeniowe gcloud opisują helloweb-ip --region us-central1Output: adres: 203.0.113.32 .. Złącze konfiguracji **Uwaga Ten krok wymaga Złącze konfiguracji. Podążaj za Instrukcje Instalacji aby zainstalować Config Connector w swoim klastrze apiVersion: compute.cnrm.cloud.google.com/v1beta1 rodzaj: ComputeAddress metadane: nazwa: helloweb-ip specyfikacja: lokalizacja: us-central1 kubectl Apply -f compute-address-regional.yamlAby znaleźć statyczny adres IP, uruchom następujące polecenie: kubectl get computeaddress helloweb-ip -o jsonpathspec.address}” Poniższy manifest opisuje usługę typu LoadBalancer, która tworzy system równoważenia obciążenia sieciowego w celu udostępnienia podów z publicznym adresem IP Zastąpić `YOUR.IP.ADDRESS.HERE` ze statycznym adresem IP: # Copyright 2021 Google LLC # # Licencja na podstawie licencji Apache, wersja 2.0 („Licencja # nie wolno używać tego pliku, chyba że jest to zgodne z licencją. # Kopię licencji można uzyskać pod adresem # # httpwww.apache.org /licenses/LICENSE-2.0 # # O ile nie jest to wymagane przez obowiązujące prawo lub uzgodnione na piśmie, oprogramowanie # rozpowszechniane w ramach Licencji jest rozpowszechniane na zasadzie "TAK JAK JEST", # BEZ GWARANCJI ANI JAKIEGOKOLWIEK RODZAJU WARUNKÓW, wyraźnych lub dorozumianych. # Zobacz Licencję, aby zapoznać się z uprawnieniami i # ograniczeniami określonymi w Licencji. apiVersion: v1 kind: Metadane usługi: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: Typ 8080: LoadBalancer loadBalancerIP: "TWÓJ.ADRES.IP.TUTAJ"Następnie utwórz usługę: kubectl Apply -f helloweb-service-static-ip.yaml Aby zobaczyć zarezerwowany adres IP powiązany z systemem równoważenia obciążenia: kubectl pobierz usługę Dane wyjściowe: NAZWA CLUSTER-IP ZEWNĘTRZNY PORT IP WIEK helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Użyj Ingressa Jeśli zdecydujesz się udostępnić swoją aplikację przy użyciu ruchu przychodzącego, który tworzy moduł równoważenia obciążenia HTTP(S), musisz zarezerwować globalny statyczny adres IP. Regionalne adresy IP nie działają z Ingress Aby dowiedzieć się więcej o używaniu Ingress do udostępniania aplikacji w Internecie, zapoznaj się z samouczkiem Konfigurowanie równoważenia obciążenia HTTP(S) za pomocą Ingress Aby utworzyć globalny statyczny adres IP o nazwie helloweb-ip: gcloud Adresy obliczeń gcloud tworzą helloweb-ip --global Aby znaleźć utworzony statyczny adres IP: adresy obliczeń gcloud opisują helloweb-ip --globalOutput: adres: 203.0.113.32 .. Złącze konfiguracji **Uwaga Ten krok wymaga Złącze konfiguracji. Podążaj za Instrukcje Instalacji aby zainstalować Config Connector w swoim klastrze apiVersion: compute.cnrm.cloud.google.com/v1beta1 rodzaj: ComputeAddress metadane: nazwa: specyfikacja helloweb-ip: lokalizacja: globalna kubectl Apply -f oblicz-adres-global.yaml Poniższy manifest opisuje aplikację internetową Ingress na statycznym adresie IP z dwoma zasobami: - A Serwis z typ: port węzła - Jakiś Ingresskonfigurowany z nazwą usługi i adnotacją statycznego adresu IP # Copyright 2021 Google LLC # # Licencja na podstawie licencji Apache, wersja 2.0 („Licencja # nie wolno używać tego pliku, chyba że jest to zgodne z licencją. # Kopię licencji można uzyskać pod adresem # # httpwww.apache.org /licenses/LICENSE-2.0 # # O ile nie jest to wymagane przez obowiązujące prawo lub uzgodnione na piśmie, oprogramowanie # rozpowszechniane w ramach Licencji jest rozpowszechniane na zasadzie "TAK JAK JEST", # BEZ GWARANCJI ANI JAKIEGOKOLWIEK RODZAJU WARUNKÓW, wyraźnych lub dorozumianych. # Zobacz Licencję, aby zapoznać się z uprawnieniami i # ograniczeniami dotyczącymi określonego języka. -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 rodzaj: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello warstwa: porty internetowe: - port: 8080 targetPort: 8080 The adnotacja kubernetes.io/ingress.global-static-ip-name określa nazwę globalnego zasobu adresu IP, który ma być powiązany z obciążeniem HTTP(S). Stabilizator Zastosuj zasób do klastra: kubectl Apply -f helloweb-ingress-static-ip.yamlOutput: ingress „helloweb” utworzył usługę „helloweb-backend”. Aby zobaczyć rezerwowy adres IP powiązany z systemem równoważenia obciążenia: kubectl pobierz dane wyjściowe: NAZWA HOSTY ADRES PORTY WIEK helloweb * 203.0.113.32 80 4m ## Odwiedzanie zarezerwowanego statycznego adresu IP Aby sprawdzić, czy system równoważenia obciążenia jest poprawnie skonfigurowany, możesz użyć pliku a przeglądarkę internetową, aby odwiedzić adres IP lub użyć kędzior: zwijać http203.0.113.32/Wyjście: Witaj świecie! Nazwa hosta: helloweb-3766687455-8lvqv ## Konfigurowanie rekordów nazw domen Aby przeglądarki wysyłały zapytania o nazwę Twojej domeny, np example.com lub subdomena imię, np blog.example.com, wskaż zarezerwowany statyczny adres IP, musisz zaktualizować rekordy DNS (Domain Name Server) swojej nazwy domeny Musisz utworzyć plik Rekord DNS typu **A** (Adres) dla Twojej domeny lub subdomeny name i skonfiguruj jego wartość z zarezerwowanym adresem IP Rekordy DNS Twojej domeny są zarządzane przez Twój serwer nazw. Twoim serwerem nazw może być „rejestrator”, u którego zarejestrowałeś swoją domenę, usługa DNS, taka jak Cloud DNS, lub inny dostawca zewnętrzny Jeśli Twoim serwerem nazw jest Cloud DNS: postępuj zgodnie z przewodnikiem Cloud DNS Quickstart, aby skonfigurować rekord DNS A dla nazwy domeny z zarezerwowanym adresem IP Twojej aplikacji. Jeśli serwerem nazw jest inny dostawca: zapoznaj się z dokumentacją usługi DNS dotyczącą ustawiania rekordów DNS A w celu skonfigurowania nazwy domeny. Jeśli zamiast tego zdecydujesz się używać Cloud DNS, zapoznaj się z sekcją Migracja do Cloud DNS ## Odwiedzanie Twojej nazwy domeny Aby sprawdzić, czy rekordy DNS A Twojej nazwy domeny odnoszą się do zarezerwowanego adresu IP, odwiedź swoją nazwę domeny Aby wykonać zapytanie DNS dla rekordu A Twojej nazwy domeny, uruchom plik gospodarz Komenda: przykład hosta.comWyjście: example.com ma adres 203.0.113.32 W tym momencie możesz skierować przeglądarkę internetową na nazwę swojej domeny i odwiedzić swoją witrynę! ## Posprzątać Aby uniknąć obciążania Twojego konta Google Cloud opłatami za zasoby używane w tym samouczku, usuń projekt zawierający zasoby lub zachowaj projekt i usuń poszczególne zasoby Usuń zasoby równoważenia obciążenia: kubectl usuń ruch przychodzący, usługa -l aplikacja = cześć Zwolnij zarezerwowany statyczny adres IP. Po usunięciu modułu równoważenia obciążenia nieużywany, ale zarezerwowany adres IP nie jest już bezpłatny i jest rozliczany według ceny za nieużywany adres IP. Uruchom następujące polecenia, aby zwolnić zasób statycznego adresu IP: Jeśli korzystałeś z Usługi: adresy gcloud compute usuwają helloweb-ip --region us-central1 Jeśli korzystałeś z Ingress: Adresy obliczeń gcloud usuwają helloweb-ip --global - Usuń przykładową aplikację: kubectl delete -f helloweb-deployment.yaml Poczekaj, aż moduł równoważenia obciążenia zostanie usunięty, obserwując dane wyjściowe następującego polecenia. Dane wyjściowe nie powinny pokazywać reguły przekierowania zawierającej w nazwie słowo „helloweb”: Lista reguł przekierowania gcloud Compute Usuń klaster kontenerów: klastry kontenerów gcloud usuwają test domeny ## Co dalej Zarejestruj własną nazwę domeny w Google Domains Zapoznaj się z innymi samouczkami Kubernetes Engine Zapoznaj się z architekturami referencyjnymi, diagramami, samouczkami i sprawdzonymi metodami dotyczącymi Google Cloud. Zajrzyj do naszego Centrum architektury chmury.