Как запускать бессерверные рабочие нагрузки с помощью Knative в Kubernetes
Автор выбрал программу Write for DOnations.
Введение
бессерверная парадигма помогает пользователям развертывать приложения, не беспокоясь о базовой инфраструктуре. С появлением Serverless 2.0 многие платформы и инструменты теперь позволяют развертывать бессерверные приложения в Kubernetes.
Openshift также использует Knative, чтобы пользователи могли развертывать свои бессерверные рабочие нагрузки поверх Kubernetes.
Knative состоит из двух основных компонентов: Сервировка. Eventing управляет событиями, запускающими бессерверные рабочие нагрузки. Обслуживание — это набор компонентов для развертывания бессерверных рабочих нагрузок и управления ими. Knative Serving позволяет разработчикам развертывать бессерверные приложения и управлять ими поверх Kubernetes. С помощью Knative Serving разработчики могут быстро и легко развертывать новые сервисы, масштабировать их вверх и вниз и подключать к другим сервисам и источникам событий. Эта функция позволяет разработчикам создавать и развертывать современные облачные приложения, которые являются гибкими, масштабируемыми и простыми в обслуживании.
В этом руководстве вы будете использовать Knative Serving для развертывания приложения Node.js в качестве бессерверной рабочей нагрузки в кластере DigitalOcean Kubernetes. Вы будете использовать doctl
(CLI DigitalOcean) и kn
(CLI Knative) для создания кластера Kubernetes и развертывания приложения.
Предпосылки
Для выполнения этого урока вам потребуется следующее:
- Учетная запись DigitalOcean, которую вы будете использовать для запуска кластера Kubernetes с объемом оперативной памяти не менее 4 ГБ и 2 ядрами ЦП. Если у вас его нет, воспользуйтесь кратким руководством по Kubernetes.
- Чтобы следовать этому руководству с удаленного сервера, вы можете настроить сервер Ubuntu 22.04 с пользователем без полномочий root и брандмауэром, следуя нашему краткому запуску Droplet.
- Клиент командной строки DigitalOcean, How To Use doctl для получения дополнительной информации об использовании
doctl
. - Документация по установке Kubernetes.
- На вашем компьютере установлен Docker, который можно настроить, выполнив шаги 1 и 2 нашего руководства по установке и использованию Docker.
- Пример приложения Node.js, настроенный в соответствии с учебным пособием How To Build a Node.js Application with Docker для создания приложения и отправки его образа контейнера в Docker Hub.
- Учетная запись в Docker Hub для хранения образов Docker, которые вы создадите в ходе выполнения этого руководства.
Шаг 1 — Запуск кластера DigitalOcean Kubernetes
Поскольку Knative — это платформа на основе Kubernetes, вы будете использовать ее с кластером Kubernetes в DigitalOcean. Есть несколько способов запустить кластер Kubernetes в DigitalOcean. Вы можете использовать облачный интерфейс DigitalOcean, CLI DigitalOcean или поставщика Terraform.
В этом руководстве вы будете использовать doctl
, клиент командной строки DigitalOcean, для запуска кластера Kubernetes. Если вы еще не установили doctl
, следуйте инструкциям официального руководства по установке.
Чтобы эффективно использовать Knative в этом руководстве, вам понадобится кластер Kubernetes с не менее 4 ГБ ОЗУ и 2 доступными ядрами ЦП. Вы можете запустить кластер с именем knative-tutorial
с этими спецификациями, выполнив команду doctl
со следующими флагами:
--size
указывает размер удаленного сервера.--count
указывает количество узлов, которые будут созданы как часть кластера.
Чтобы создать кластер DigitalOcean Kubernetes, выполните следующую команду:
- doctl kubernetes cluster create knative-tutorial --size s-2vcpu-4gb --count 3
В этой команде вы создаете кластер с именем knative-tutorial
с размером
, равным 4 ГБ ОЗУ и 2 ядрам ЦП, и с count
из 3
узлов.
Примечание. Вы также можете использовать флаг --region
, чтобы указать, в каком регионе будет расположен сервер, хотя этот параметр не используется в этом руководстве. Если вы используете удаленный сервер, например дроплет, возможно, вы захотите, чтобы ваш кластер находился в том же регионе, что и сервер. Если вы используете панель управления DigitalOcean для таблицы региональной доступности.
Выполнение этой команды займет несколько минут. После завершения вы получите сообщение, подобное следующему:
OutputNotice: Cluster is provisioning, waiting for cluster to be running
...........................................................
Notice: Cluster created, fetching credentials
Notice: Adding cluster credentials to kubeconfig file found in "/home/sammy/.kube/config"
Notice: Setting current-context to do-nyc1-knative-tutorial
ID Name Region Version Auto Upgrade Status Node Pools
d2d1f9bc-114b-45e7-b109-104137f9ab62 knative-tutorial nyc1 1.24.4-do.0 false running knative-tutorial-default-pool
Теперь кластер готов к использованию.
Теперь вы можете проверить, настроен ли kubectl
в вашей системе и может ли он получить доступ к кластеру DigitalOcean Kubernetes с помощью следующей команды:
- kubectl cluster-info
Вы должны получить аналогичный вывод:
OutputKubernetes control plane is running at https://69de217e-0284-4e18-a6d7-5606915a4e88.k8s.onlinux-console.net
CoreDNS is running at https://69de217e-0284-4e18-a6d7-5606915a4e88.k8s.onlinux-console.net/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Поскольку в выходных данных перечислены URL-адреса control plane
и службы CoreDNS
(выделены в выходном блоке), вы знаете, что kubectl
настроен правильно. в вашей системе и может получить доступ к кластеру.
В рамках процесса создания кластера doctl
автоматически настраивает контекст kubectl
для использования нового кластера. Вы можете убедиться в этом, выполнив следующую команду:
- kubectl config current-context
Эта команда вернет имя текущего контекста.
Вы должны получить следующий вывод:
Outputdo-nyc1-knative-tutorial
Вывод указывает, что текущий контекст — do-nyc1-knative-tutorial
, то есть имя созданного вами кластера с регионом, в котором он расположен (nyc1
).
Вы также можете убедиться, что кластер работает и узлы готовы принять рабочие нагрузки, с помощью этой команды:
- kubectl get nodes
Команда kubectl get nodes
выводит список всех узлов в кластере вместе с их статусом и другой информацией.
Вы должны получить следующий вывод:
OutputNAME STATUS ROLES AGE VERSION
do-nyc1-knative-tutorial-159783000-0v9k5 Ready <none> 2m52s v1.24.4
do-nyc1-knative-tutorial-159783000-1h4qj Ready <none> 2m52s v1.24.4
do-nyc1-knative-tutorial-159783000-1q9qf Ready <none> 2m52s v1.24.4
В выходных данных указано, что в кластере есть три узла, готовых принять рабочие нагрузки.
На этом шаге вы запустили кластер Kubernetes в DigitalOcean. Теперь вы можете установить Knative, чтобы развернуть бессерверную рабочую нагрузку в Kubernetes.
Шаг 2 — Установка Knative Serving
На этом этапе вы установите Knative Serving в свой кластер Kubernetes. Knative Serving отвечает за развертывание и управление вашими бессерверными рабочими нагрузками.
Для установки Knative Serving вам потребуются основные компоненты Knative и специальные ресурсы. Запустите эти команды, чтобы установить основные компоненты:
- kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-crds.yaml
- kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-core.yaml
Команда kubectl apply
устанавливает основные компоненты Knative и пользовательские ресурсы в ваш кластер. Флаг -f
указывает файл, содержащий изменения конфигурации. В этом случае изменения конфигурации находятся в файлах YAML, которые вы загружаете из репозитория Knative.
Выполнение этих команд займет несколько минут. Вы получите следующий вывод (вывод ниже усечен для краткости):
Outputcustomresourcedefinition.apiextensions.k8s.io/certificates.networking.internal.knative.dev created
customresourcedefinition.apiextensions.k8s.io/clusteringresses.networking.internal.knative.dev created
customresourcedefinition.apiextensions.k8s.io/configurations.serving.knative.dev created
customresourcedefinition.apiextensions.k8s.io/images.caching.internal.knative.dev created
customresourcedefinition.apiextensions.k8s.io/ingresses.networking.internal.knative.dev created
...
Эти выходные данные показывают, что основные компоненты и пользовательские ресурсы Knative находятся в вашем кластере. Все компоненты находятся в пространстве имен knative-serving
.
После завершения загрузки вы можете убедиться, что Knative Serving установлен:
- kubectl get pods --namespace knative-serving
Команда kubectl get pods
получит список всех pod'ов, запущенных в кластере, в пространстве имен knative-serving
. Эта команда определяет модули в вашем кластере, их текущий статус, количество контейнеров в модуле и имена контейнеров в определенном пространстве имен.
Вы должны получить аналогичный вывод:
OutputNAME READY STATUS RESTARTS AGE
activator-5f6b4bf5c8-kfxrv 1/1 Running 0 4m37s
autoscaler-bc7d6c9c9-v5jqt 1/1 Running 0 4m34s
controller-687d88ff56-9g4gz 1/1 Running 0 4m32s
domain-mapping-69cc86d8d5-kr57g 1/1 Running 0 4m29s
domainmapping-webhook-65dfdd9b96-nzs9c 1/1 Running 0 4m27s
net-kourier-controller-55c99987b4-hkfpl 1/1 Running 0 3m49s
webhook-587cdd8dd7-qbb9b 1/1 Running 0 4m22s
В выходных данных отображаются все модули, работающие в пространстве имен knative-serving
. Модули отвечают за различные компоненты Knative Serving.
Knative требует сетевого уровня для маршрутизации входящего трафика к вашим сервисам. Сетевой уровень в Knative позволяет развертывать и обмениваться микросервисами в распределенной среде. Knative Serving поддерживает Kourier в качестве сетевого уровня.
В этом руководстве вы будете использовать Kourier в качестве сетевого уровня, поскольку он легко интегрируется с Knative. Kourier использует те же API и стандарты, что и остальная часть экосистемы Knative, что делает его хорошим вариантом для разработчиков и организаций, уже использующих Knative и желающих воспользоваться его мощными сетевыми возможностями.
Установите Kourier с помощью этой команды:
- kubectl apply -f https://github.com/knative/net-kourier/releases/download/knative-v1.8.0/kourier.yaml
Вы должны получить следующий вывод:
Outputnamespace/kourier-system configured
configmap/kourier-bootstrap configured
configmap/config-kourier configured
serviceaccount/net-kourier configured
clusterrole.rbac.authorization.k8s.io/net-kourier configured
clusterrolebinding.rbac.authorization.k8s.io/net-kourier configured
deployment.apps/net-kourier-controller configured
service/net-kourier-controller configured
deployment.apps/3scale-kourier-gateway configured
service/kourier configured
service/kourier-internal configured
В выходных данных перечислены все ресурсы, такие как Namespaces
и ConfigMaps
, созданные как часть процесса установки Kourier в кластере Kubernetes.
Чтобы настроить Knative для использования Kourier в качестве сетевого уровня, отредактируйте config-network
ConfigMap.
Для этого вам нужно использовать команду kubectl patch
для обновления полей объекта в кластере Kubernetes. Вам также нужно будет включить некоторые флаги с этой командой:
--namespace
указывает, где вы можете найти объект, который хотите исправить.--type
указывает, какое исправление следует выполнять при применении конфигураций с помощью командыpatch
. Доступны следующие типы:json
,merge
истратегический
.--patch
указывает данные исправления непосредственно в командной строке, а не в файле.
Запустите эту команду с соответствующими флагами:
- kubectl patch configmap/config-network \
- --namespace knative-serving \
- --type merge \
- --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}'
Команда kubectl patch
исправляет configmap/config-network
с пространством имен
, установленным на knative-serving
, и type
установите значение объединить
.
Тип исправления merge
позволяет вносить более целенаправленные обновления, а типы исправления json
или стратегический
позволяют вносить более полные обновления. Тип исправления merge
указывает отдельные поля для обновления без включения всей конфигурации ресурса в команду исправления, как в случае с другими типами. Исправленные данные помечаются флагом patch
.
Вы должны получить следующий вывод:
Outputconfigmap/config-network patched
Вывод этой команды гарантирует, что Kourier правильно настроен в кластере.
Наконец, получите внешний IP-адрес балансировщика нагрузки Kourier с помощью следующей команды:
- kubectl get svc kourier --namespace kourier-system
Команда kubectl get svc
извлекает информацию о службах, работающих в кластере Kubernetes в указанном пространстве имен (в данном случае kourier-system
). Эта команда выведет список всех служб в кластере с соответствующими IP-адресами и номерами портов.
Вы должны получить следующий вывод:
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kourier LoadBalancer 10.245.186.153 138.197.231.61 80:31245/TCP,443:30762/TCP 2m33s
Выходные данные команды включают имя службы, тип службы (например, ClusterIP
, NodePort
и т. д.), IP-адрес кластера и номер порта, внешний IP-адрес и номер порта. Числа, перечисленные здесь, являются примерами, поэтому в вашем выводе будут отображаться другие числа.
Подготовка балансировщика нагрузки может занять несколько минут. Вы можете увидеть пустое значение или <pending>
для поля EXTERNAL-IP
. Если это так, подождите несколько минут и повторите команду.
Примечание. Прежде чем продолжить работу с этим учебным пособием, вам потребуется подготовить балансировщик нагрузки. После заполнения поля EXTERNAL-IP
для LoadBalancer
можно продолжить. В противном случае у вас могут возникнуть проблемы при настройке службы DNS.
Вы также можете настроить DNS для своего доменного имени, чтобы оно указывало на внешний IP-адрес балансировщика нагрузки. Knative предоставляет задание Kubernetes под названием default-domain
, которое автоматически настроит Knative Serving на использование sslip.io
в качестве DNS-суффикса по умолчанию.
sslip.io
— это динамическая служба DNS (система доменных имен), которая позволяет пользователям получать доступ к своим устройствам, используя собственное доменное имя вместо IP-адреса. Использование sslip.io
улучшает удаленный доступ пользователей к своим устройствам без необходимости запоминать сложные IP-адреса.
Чтобы настроить DNS-суффикс по умолчанию, вам потребуется выполнить следующую команду:
- kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-default-domain.yaml
Вы получите следующий вывод:
Outputjob.batch/default-domain configured
service/default-domain-service configured
Ресурсы, необходимые для запуска службы Magic DNS, успешно настроены.
Примечание. Вы также можете добавить домен, если хотите, хотя это выходит за рамки этой статьи. Вам необходимо настроить провайдера DNS (например, Cloud DNS или Route53) и создать запись A для входящего шлюза Knative, которая сопоставляется с IP-адресом вашего кластера Knative. Затем вы должны обновить конфигурацию входного шлюза Knative, чтобы использовать созданную вами зону DNS и запись A. Вы можете протестировать конфигурацию DNS, подключившись к обслуживающему домену Knative и убедившись, что он разрешается во входной шлюз.
Вы успешно установили Knative Serving в свой кластер Kubernetes. Теперь вы можете развернуть бессерверную рабочую нагрузку с помощью Knative Serving в своем кластере Kubernetes.
Шаг 3 — Развертывание бессерверной рабочей нагрузки
На этом этапе вы развернете бессерверную рабочую нагрузку поверх Knative, которая в данный момент работает в вашем кластере Kubernetes. Вы будете использовать приложение Node.js, которое вы создали как часть предварительных требований.
Прежде чем продолжить, вы создадите новое пространство имен
для развертывания вашей бессерверной рабочей нагрузки. Вы можете сделать это, выполнив следующую команду:
- kubectl create namespace serverless-workload
Эта команда создаст новое пространство имен с именем serverless-workload
.
Вы должны получить следующий вывод:
Outputnamespace/serverless-workload configured
Вывод гарантирует, что пространство имен было создано успешно.
Knative Serving использует собственный ресурс под названием Service
для развертывания и управления вашими бессерверными рабочими нагрузками. Ресурс Service
определяется Knative Serving API.
Как только вы создадите или измените ресурс Service
, Knative Serving автоматически создаст новую Revision
. Редакция
— это моментальный снимок вашей рабочей нагрузки.
Всякий раз, когда создается новая редакция
, трафик будет направляться в новую редакцию
по маршруту
. Knative Serving автоматически создает маршрут
для каждой службы. Вы можете получить доступ к своей рабочей нагрузке, используя доменное имя из Route
.
Чтобы развернуть бессерверную рабочую нагрузку на Knative, вы должны создать ресурс Service
. Вы можете добиться этого двумя разными способами:
- Используя
kn
, официальный инструмент командной строки Knative. - Использование инструмента командной строки
kubectl
для применения файлов YAML к кластеру Kubernetes.
В следующих подразделах вы будете использовать каждый из этих методов.
Вариант 1 — Использование Knative CLI
Knative CLI, kn
, представляет собой интерфейс командной строки, который позволяет вам взаимодействовать с Knative.
Сначала установите kn
, загрузив последнюю версию исполняемого файла Knative CLI:
- wget https://github.com/knative/client/releases/download/knative-v1.8.1/kn-linux-amd64
Команда wget
извлечет инструмент.
Затем переместите двоичный файл в папку с именем kn
:
- mv kn-linux-amd64 kn
Затем сделайте его исполняемым с помощью следующей команды:
- chmod +x kn
Наконец, переместите исполняемый двоичный файл в каталог в вашем PATH
:
- cp kn /usr/local/bin/
Убедитесь, что kn
установлен:
- kn version
Вы должны получить аналогичный вывод:
OutputVersion: v1.8.1
Build Date: 2022-10-20 16:09:37
Git Revision: 1db36698
Supported APIs:
* Serving
- serving.knative.dev/v1 (knative-serving v1.8.0)
* Eventing
- sources.knative.dev/v1 (knative-eventing v1.8.0)
- eventing.knative.dev/v1 (knative-eventing v1.8.0)
В выводе этой команды указано, что kn
установлен.
Чтобы развернуть приложение Node.js с помощью kn
, вы будете использовать команду kn service create
. Вы включите некоторые флаги с помощью этой команды:
--image
указывает образ контейнера, который вы хотите развернуть.--port
указывает порт, который прослушивает ваше приложение.--name
указывает имяService
, которое вы хотите создать.--namespace
указывает пространство имен, в котором вы хотите развернуть рабочую нагрузку.
Чтобы развернуть приложение Node.js, выполните следующую команду и обновите выделенную часть, указав свое имя пользователя DockerHub:
- kn service create node-service \
- --image your_dockerhub_username/nodejs-image-demo \
- --port 8080 \
- --namespace serverless-workload
Команда kn service
создает службу Knative с именем node-service
с портом
, установленным на 8080
, и namespace
установлен на serverless-workload
. Флаг image
указывает расположение контейнера приложения, загруженного в Dockerhub.
Вы должны получить следующий вывод:
OutputCreating service 'node-service' in namespace 'serverless-workload':
0.236s Configuration "node-service" is waiting for a Revision to become ready.
2.230s ...
2.311s Ingress has not yet been reconciled.
2.456s Waiting for load balancer to be ready
2.575s Ready to serve.
Service 'node-service' created to latest revision 'node-service-00001' is available at URL:
http://node-service.serverless-workload.138.197.231.61.sslip.io
Этот вывод показывает статус создания Knative Service
. После создания Service
вы найдете URL-адрес Route
, связанный с Service
.
Выполните следующую команду, чтобы убедиться, что ресурс Service
создан:
- kn service list --namespace serverless-workload
Команда kn service list
выводит список всех служб, которые в настоящее время развернуты с помощью Knative Serving в определенном пространстве имен в кластере Kubernetes. Эта команда позволяет получить доступ к сведениям о каждой службе, включая ее имя, статус и URL-адрес.
Вы должны получить аналогичный вывод:
OutputNAME URL LATEST AGE CONDITIONS READY REASON
node-service http://node-service.serverless-workload.138.197.231.61.sslip.io node-service-00001 88s 3 OK / 3 True
Из этого вывода вы можете убедиться, что новый Knative Service
был создан командой kn service
, которую вы выполнили ранее. Вы также найдете URL для Route
и Age
и Status
службы.
В этом разделе вы установили Knative CLI и использовали его для развертывания бессерверной рабочей нагрузки для вашего приложения Node.js.
Вариант 2 — Создание сервисного ресурса с использованием файлов YAML
Вы также можете развернуть ресурс Service
, создав файл YAML, определяющий ресурс. Этот метод полезен для обеспечения контроля версий ваших рабочих нагрузок.
Сначала вы создадите подкаталог в каталоге, содержащем ваш Dockerfile
. В этом руководстве для подкаталога используется имя knative
. Создайте папку:
- mkdir knative
Затем вы создадите файл YAML с именем service.yaml
в каталоге knative
:
- nano knative/service.yaml
Во вновь созданный файл service.yaml
добавьте следующие строки, чтобы определить Service
, который будет развертывать ваше приложение Node.js:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: node-yaml-service
namespace: serverless-workload
spec:
template:
metadata:
name: node-yaml-service-v1
spec:
containers:
- image: docker.io/your_dockerhub_username/nodejs-image-demo
ports:
- containerPort: 8080
Файл YAML Knative Service содержит следующую информацию:
name
в первом разделеmetadata
определяетname
ресурсаService
.namespace
указываетnamespace
, в котором вы хотите развернуть рабочую нагрузку.name
в первом разделеspec
указываетname
Revision
.image
во втором разделеspec
указываетimage
контейнера, который вы хотите развернуть.containerPort
указываетпорт
, который слушает ваше приложение.
Обязательно обновите выделенный текст информацией, которую вы выбрали для своего приложения и системы, а также своим именем пользователя DockerHub.
Сохраните и закройте файл.
Теперь вы можете развернуть ресурс Service
, выполнив следующую команду:
- kubectl apply -f knative/service.yaml
Вы должны получить следующий вывод:
Outputservice.serving.knative.dev/node-yaml-service created
Вывод указывает, что ресурс Service
успешно создан.
Выполните следующую команду, чтобы убедиться, что ресурс Service
создан:
- kn service list --namespace serverless-workload
Команда kn service list
выводит список всех служб, которые в настоящее время развернуты с помощью Knative Serving в определенном пространстве имен. Эта команда позволяет получить доступ к сведениям о каждой службе.
Вы должны получить следующий вывод:
OutputNAME URL LATEST AGE CONDITIONS READY REASON
node-service http://node-service.serverless-workload.174.138.127.211.sslip.io node-service-00001 9d 3 OK / 3 True
node-yaml-service http://node-yaml-service.serverless-workload.174.138.127.211.sslip.io node-yaml-service-v1 9d 3 OK / 3 True
Вы можете убедиться, что новый Service
Knative был создан на основе YAML-файла Knative Service, который вы выполнили ранее. В этом разделе вы создали node-yaml-service
. Вы также можете найти URL-адрес Knative Route
.
В этом разделе вы использовали файл YAML для создания бессерверной рабочей нагрузки для вашего приложения Node.js.
На этом шаге вы создали ресурс Service
Knative, используя инструмент командной строки kn
и файл YAML. Далее вы получите доступ к рабочей нагрузке приложения, которое вы развернули с помощью Knative.
Шаг 4 — Доступ к рабочей нагрузке приложения
Теперь, когда вы развернули бессерверную рабочую нагрузку, вы можете получить к ней доступ с помощью URL-адреса из Knative Route
, созданного как часть бессерверной рабочей нагрузки. Knative Route определяет, как входящий HTTP-трафик должен направляться к определенной службе или приложению.
Чтобы получить список всех маршрутов Knative, выполните следующую команду:
- kn route list --namespace serverless-workload
Команда kn route list
выводит список всех маршрутов Knative в определенном пространстве имен в кластере Kubernetes.
Вы должны получить аналогичный вывод:
OutputNAME URL READY
node-service http://node-service.serverless-workload.138.197.231.61.sslip.io True
node-yaml-service http://node-yaml-service.serverless-workload.138.197.231.61.sslip.io True
Вы будете использовать URL-адреса, сгенерированные для Knative Routes, чтобы убедиться, что все работает должным образом.
Откройте любой из URL-адресов в браузере. При доступе к сайту в браузере загрузится целевая страница из приложения Node:
Вы успешно развернули бессерверную рабочую нагрузку с помощью Knative в своем кластере Kubernetes.
Заключение
В этом руководстве вы развернули бессерверную рабочую нагрузку с помощью Knative. Вы создали ресурс Knative Service
с помощью инструмента командной строки kn
и файлов YAML. Этот ресурс развернул приложение Node.js в вашем кластере Kubernetes, доступ к которому вы получили с помощью URL-адреса Route
.
Чтобы узнать больше о функциях, которые предлагает Knative, например о документации Knative, см.
Чтобы продолжить разработку с помощью DigitalOcean Kubernetes (DOKS), обратитесь к нашим руководствам по поддержке Kubernetes.