У цьому підручнику показано, як використовувати Google Kubernetes Engine (GKE), щоб надати веб-програму доступ до Інтернету на статичній зовнішній IP-адресі та налаштувати доменне ім’я для вказівки на вашу програму Цей підручник передбачає, що ви володієте зареєстрованим доменним іменем, наприклад example.com Ви можете зареєструвати доменне ім’я через Google Домени або інший ваш реєстратор доменів вибір, якщо у вас його немає ## Цілі Цей підручник демонструє наступні кроки: ## Витрати У цьому посібнику використовуються такі платні компоненти Google Cloud: Щоб створити оцінку вартості на основі прогнозованого використання, скористайтеся калькулятором ціноутворення Коли ви завершите цей підручник, ви зможете уникнути подальшого виставлення рахунків, видаливши створені вами ресурси. Для отримання додаткової інформації див. Очищення ## Перш ніж почати Виконайте такі дії, щоб увімкнути API Kubernetes Engine: - Відвідайте сторінку Kubernetes Engine на консолі Google Cloud - Створіть або виберіть проект - Зачекайте, доки буде ввімкнено API та пов’язані служби. Це може зайняти кілька хвилин - Переконайтеся, що виставлення рахунків увімкнено для вашого хмарного проекту. Дізнайтеся, як перевірити, чи ввімкнено виставлення рахунків у проекті Встановіть такі інструменти командного рядка, які використовуються в цьому посібнику: - gcloudis використовується для створення та видалення кластерів Kubernetes Engine gcloudi включено в gcloudCLI - kubectlis використовується для керування Kubernetes, системою оркестровки кластерів, яка використовується Kubernetes Engine. Можна встановлювати kubectlusing gcloud: компоненти gcloud інсталювати kubectl Клонуйте приклад коду з GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Встановити значення за замовчуванням для Щоб заощадити час, введіть свій ідентифікатор проекту і параметри зони Compute Engine у інструмент командного рядка gcloud інструмент командного рядка gcloud, ви можете встановити значення за замовчуванням: Проект набору конфігурацій gcloud project-idgcloud config set compute/zone compute-zone Створіть кластер Створіть кластер контейнерів під назвою domain-test для розгортання вашої веб-програми: кластери контейнерів gcloud створюють доменний тест ## Розгортання вашої веб-програми Наступний маніфест описує розгортання, яке запускає зразок зображення контейнера веб-програми: # Copyright 2021 Google LLC # # Ліцензовано згідно з ліцензією Apache, версія 2.0 («Ліцензія # ви не можете використовувати цей файл, окрім як відповідно до Ліцензії. # Ви можете отримати копію Ліцензії на # # httpwww.apache.org /licenses/LICENSE-2.0 # # Якщо цього не вимагає застосовне законодавство або письмово не узгоджено, програмне забезпечення #, що розповсюджується за Ліцензією, розповсюджується на ОСНОВІ «ЯК Є», # БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ АБО УМОВ, явних або непрямих. # Дивіться Ліцензію, щоб дізнатися про дозволи та # обмеження щодо певної мови в Ліцензії. apiVersion: apps/v1 kind: метадані розгортання: ім’я: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: мітки: програма: hello tier: веб-специфікація: контейнери: - назва: hello-app зображення: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 порти: - containerPort: 8080 ресурси: запити : процесор: 200 м Виконайте таку команду, щоб створити розгортання: kubectl apply -f helloweb-deployment.yaml ## Розкриття вашої програми Ви можете виставити свою програму на GKE одним із наведених нижче методів: Використовуйте службу, яка створює балансувальник мережевого навантаження TCP, який працює з регіональними IP-адресами. Використовуйте Ingress, який створює HTTP(S) Load Balancer і підтримує глобальні IP-адреси Щоб дізнатися більше про плюси та мінуси кожного методу, зверніться до розділу Налаштування балансування навантаження HTTP(S) із Ingress Скористайтеся послугою Щоб переконатися, що ваша програма має статичну публічну IP-адресу, ви повинні зарезервувати статичну IP-адресу Якщо ви вирішите розкривати свою програму за допомогою служби, ви повинні створити регіональну IP-адресу. Глобальні IP-адреси працюють лише з типом ресурсу Ingress, як пояснюється в наступному розділі Щоб скористатися послугою, створіть статичну IP-адресу з назвою helloweb-ip у область us-central1: gcloud gcloud compute addresses create helloweb-ip --region us-central1 Щоб знайти створену вами статичну IP-адресу, виконайте таку команду: gcloud compute addresses describe helloweb-ip --region us-central1Output: адреса: 203.0.113.32 .. Роз'єм конфігурації **Примітка. Цей крок вимагає Роз'єм конфігурації. Дотримуйтесь Інструкції з Інсталяції щоб установити Config Connector на вашому кластері apiVersion: compute.cnrm.cloud.google.com/v1beta1 вид: метадані ComputeAddress: назва: специфікація helloweb-ip: розташування: us-central1 kubectl apply -f compute-address-regional.yaml Щоб знайти статичну IP-адресу, виконайте таку команду: kubectl get computeaddress helloweb-ip -o jsonpathspec.address}'Наступний маніфест описує службу типу LoadBalancer, яка створює балансир мережевого навантаження, щоб надавати Pods із загальнодоступною IP-адресою Замінити `ВАША.IP.АДРЕСА.ТУТ` зі статичною IP-адресою: # Copyright 2021 Google LLC # # Ліцензовано згідно з ліцензією Apache, версія 2.0 («Ліцензія # ви не можете використовувати цей файл, окрім як відповідно до Ліцензії. # Ви можете отримати копію Ліцензії на # # httpwww.apache.org /licenses/LICENSE-2.0 # # Якщо цього не вимагає застосовне законодавство або письмово не узгоджено, програмне забезпечення #, що розповсюджується за Ліцензією, розповсюджується на ОСНОВІ «ЯК Є», # БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ АБО УМОВ, явних або непрямих. # Перегляньте Ліцензію, щоб отримати доступ до певної мови та # обмежень у Ліцензії. apiVersion: v1 kind: Service metadata: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: Тип 8080: LoadBalancer loadBalancerIP: "ВАША.IP.АДРЕСА.ТУТ"Потім створіть службу: kubectl apply -f helloweb-service-static-ip.yaml Щоб переглянути зарезервовану IP-адресу, пов’язану з балансувальником навантаження: kubectl отримати serviceOutput: НАЗВА КЛАСТЕРНОГО-IP ЗОВНІШНЬОГО IP-ПОРТА(ІВ) ВІК helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Використовуйте Ingress Якщо ви вирішите виставити свою програму за допомогою Ingress, який створює HTTP(S) Load Balancer, ви повинні зарезервувати глобальну статичну IP-адресу. Регіональні IP-адреси не працюють з Ingress Щоб дізнатися більше про те, як використовувати Ingress для надання доступу до Інтернету, зверніться до посібника Налаштування балансування навантаження HTTP(S) за допомогою Ingress Щоб створити глобальну статичну IP-адресу з іменем helloweb-ip: gcloud обчислювальні адреси gcloud створюють helloweb-ip --global Щоб знайти створену вами статичну IP-адресу: обчислювальні адреси gcloud описують helloweb-ip --globalOutput: адреса: 203.0.113.32 .. Роз'єм конфігурації **Примітка. Цей крок вимагає Роз'єм конфігурації. Дотримуйтесь Інструкції з Інсталяції щоб установити Config Connector на вашому кластері apiVersion: compute.cnrm.cloud.google.com/v1beta1 вид: метадані ComputeAddress: назва: специфікація helloweb-ip: розташування: глобальне kubectl apply -f compute-address-global.yaml Наступний маніфест описує веб-програму Ingress на статичній IP-адресі з двома ресурсами: - А Обслуговування с тип: NodePort - Ан Вхід налаштовано за допомогою назви служби та анотації статичної IP-адреси # Copyright 2021 Google LLC # # Ліцензовано згідно з ліцензією Apache, версія 2.0 («Ліцензія # ви не можете використовувати цей файл, окрім як відповідно до Ліцензії. # Ви можете отримати копію Ліцензії на # # httpwww.apache.org /licenses/LICENSE-2.0 # # Якщо цього не вимагає застосовне законодавство або письмово не узгоджено, програмне забезпечення #, що розповсюджується за Ліцензією, розповсюджується на ОСНОВІ «ЯК Є», # БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ АБО УМОВ, явних або непрямих. # Перегляньте Ліцензію, щоб дізнатися про дозволи та # обмеження щодо певної мови в Ліцензії. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helloweb annotations: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 type: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello рівень: веб-порти: - порт: 8080 targetPort: 8080 The анотація kubernetes.io/ingress.global-static-ip-name визначає назву глобального ресурсу IP-адреси, який буде пов’язано із завантаженням HTTP(S). Балансир Застосуйте ресурс до кластера: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingress "helloweb"створено службу "helloweb-backend"створено Щоб переглянути резервну IP-адресу, пов’язану з балансувальником навантаження: kubectl отримати ingressOutput: ІМ'Я ХОСТИ АДРЕСА ПОРТИ ВІК helloweb * 203.0.113.32 80 4м ## Відвідування вашої зарезервованої статичної IP-адреси Щоб перевірити, чи балансувальник навантаження налаштовано правильно, ви можете скористатися a веб-браузер для відвідування IP-адреси або використання завиток: curl http203.0.113.32/Вихід: Привіт Світ! Ім'я хосту: helloweb-3766687455-8lvqv ## Налаштування записів вашого доменного імені Щоб браузери запитували ваше доменне ім’я, наприклад example.com або субдомен назва, наприклад blog.example.com, вкажіть на статичну IP-адресу, яку ви зарезервували, необхідно оновити записи DNS (сервер доменних імен) вашого доменного імені Ви повинні створити Запис DNS типу **A** (адреса) для вашого домену або субдомену ім’я та налаштувати його значення із зарезервованою IP-адресою Записами DNS вашого домену керує ваш сервер імен. Ваш сервер імен може бути «реєстратором», де ви зареєстрували свій домен, службою DNS, наприклад Cloud DNS, або іншим стороннім постачальником Якщо вашим сервером імен є Cloud DNS: дотримуйтеся швидкого посібника Cloud DNS, щоб налаштувати DNS. Запис для вашого доменного імені із зарезервованою IP-адресою вашої програми. Якщо вашим сервером імен є інший постачальник: зверніться до документації служби DNS щодо налаштування записів DNS A, щоб налаштувати ваше доменне ім’я. Якщо замість цього ви вирішите використовувати Cloud DNS, зверніться до статті Перехід на Cloud DNS ## Відвідування вашого доменного імені Щоб переконатися, що записи DNS A вашого доменного імені відповідають зарезервованій вами IP-адресі, відвідайте своє доменне ім’я Щоб зробити DNS-запит для запису A вашого доменного імені, запустіть хост команда: host example.comВихід: example.com має адресу 203.0.113.32 На цьому етапі ви можете навести свій веб-браузер на своє доменне ім’я та відвідати свій веб-сайт! ## Прибирати Щоб уникнути стягнення плати з вашого облікового запису Google Cloud за ресурси, використані в цьому посібнику, або видаліть проект, який містить ресурси, або збережіть проект і видаліть окремі ресурси Видаліть ресурси балансування навантаження: kubectl delete ingress,service -l app=hello Вивільніть зарезервований статичний IP-адресу. Після видалення балансувальника навантаження невикористана, але зарезервована IP-адреса більше не є безкоштовною, а оплачується за невикористану IP-адресу. Виконайте такі команди, щоб звільнити ресурс статичної IP-адреси: Якщо ви скористалися послугою: обчислювальні адреси gcloud delete helloweb-ip --region us-central1 Якщо ви використовували Ingress: обчислювальні адреси gcloud delete helloweb-ip --global - Видалити зразок заяви: kubectl delete -f helloweb-deployment.yaml Зачекайте, доки балансувальник навантаження буде видалено, спостерігаючи за результатами наступної команди. Вихідні дані не повинні показувати правило пересилання, яке містить «helloweb» у своїй назві: список правил переадресації обчислень gcloud Видаліть кластер контейнера: кластери контейнерів gcloud видалити тест домену ## Що далі Зареєструйте власне доменне ім’я через Google Domains Перегляньте інші навчальні посібники Kubernetes Engine Ознайомтеся з еталонними архітектурами, діаграмами, навчальними посібниками та передовими методами роботи з Google Cloud. Подивіться на наш Cloud Architecture Center.