Документ объясняет, как создать среду разработки, чтобы вы могли приступить к
вкладу в Knative Serving
. Также
проверьте:
Следуйте инструкциям ниже, чтобы установить вашу среду разработки. Как только вы выполните эти требования, вы сможете делать изменения и развертывать свою версию Knative Serving!
Перед отправкой запроса на слияние также проверьте CONTRIBUTING.md.
Начните с создания учетной записи GitHub, затем настройте доступ к GitHub через SSH.
Вы должны установить следующие инструменты:
go
: Язык, на котором построен Knative Serving
(1.14 или выше)git
: Для контроля версийko
: Для разработкиkubectl
: Для управления средами разработкиbash
4 или выше. На macOS стандартная версия bash слишком старая, вы можете использовать Homebrew для установки более новой версии.Если вы работаете над и изменяете файлы .proto
:1. protoc
: Для компиляции протоколов буферов.
protoc-gen-gogofaster
: Для генерации эффективного кода на Go из протоколов буферов.Настройте репозиторий Docker для отправки образов. Вы можете использовать любой контейнерный регистр образов, настроив методы аутентификации и пути репозиториев, указанные ниже.
KO_DOCKER_REPO=ko.local
(предпочтительно) или использовать флаг -L
команды ko
, чтобы локально сборить и отправить образы (в этом случае аутентификация не требуется). Если вы используете kind для разработки, вы можете установить KO_DOCKER_REPO=kind.local
.Примечание: Вам потребуется аутентификация с помощью вашей переменной KO_DOCKER_REPO
перед отправкой образов. Выполните команду gcloud auth configure-docker
, если вы используете Google Container Registry, или docker login
, если вы используете Docker Hub.
Чтобы запустить свое окружение, вам потребуются следующие переменные окружения (мы рекомендуем добавить их в свой .bashrc
):1. GOPATH
: Если у вас нет такой переменной окружения, просто выберите директорию и добавьте export GOPATH=...
$GOPATH/bin
в PATH
: Это необходимо для корректной работы инструментов, установленных через go get
.KO_DOCKER_REPO
: Директория Docker-репозитория, куда должны быть отправлены образы разработчика (например, gcr.io/[gcloud-project]
).KO_DOCKER_REPO
должна быть docker.io/<username>
.Пример конфигурации в .bashrc
:
export GOPATH="$HOME/go"
export PATH="${PATH}:${GOPATH}/bin"
export KO_DOCKER_REPO='gcr.io/my-gcloud-project-id'
Для клонирования этого репозитория:
git clone git@github.com:${YOUR_GITHUB_USERNAME}/serving.git
cd serving
git remote add upstream https://github.com/knative/serving.git
git remote set-url --push upstream no_push
Добавление удаленного репозитория upstream
позволит вам легко регулярно синхронизировать свой форк.
После выполнения этих шагов вы готовы сделать полную сборку и развертывание, как описано ниже.
Knative Serving
. Обратите внимание, что если вы уже установили Knative в своем кластере, повторное развертывание новой версии должно пройти успешно, но если возникнут проблемы, вы можете легко очистить свой кластер и попробовать снова.Перейдите в директорию serving
, чтобы установить следующие компоненты.Ваш пользователь должен иметь права cluster-admin для выполнения требуемых настроек для Knative. По умолчанию это должно быть так, если вы самостоятельно развернули свой кластер Kubernetes. В частности, вам потребуется возможность создания объектов типа Namespace, CustomResourceDefinition, ClusterRole и ClusterRoleBinding уровня кластера.
Пожалуйста, выделите достаточное количество ресурсов для Kubernetes, особенно если вы запускаете кластер Kubernetes на локальной машине. Мы рекомендуем выделить как минимум 6 процессорных ядер и 8 ГБ оперативной памяти при одиночной установке Kubernetes, а также как минимум 4 процессорных ядра и 8 ГБ оперативной памяти для каждого узла при трёхузловой установке Kubernetes. В случае необходимости вернитесь к настройке вашего кластера Kubernetes для переconfiguration вашего кластера Kubernetes в вашей среде.
Развернуть cert-manager
kubectl apply -f ./third_party/cert-manager-latest/cert-manager.yaml
kubectl wait --for=condition=established --all crd
kubectl wait --for=condition=available -n cert-manager --all deployments
KO_DOCKER_REPO=ko.local
(или KO_DOCKER_REPO=kind.local
соответственно) для избежания необходимости отправки ваших образов в реестр снаружи машины.Запустите:ko apply --selector knative.dev/crd-install=true -Rf config/core/
kubectl wait --for=condition=Established --all crd
ko apply -Rf config/core/
# Опциональные шаги
# Установка компонентов DomainMapping. Активирует функцию DomainMapping.
# Необходимо для прохождения тестов совместимости, если передан флаг `--enable-alpha`.
ko apply -Rf config/domain-mapping/
# Запуск задачи после установки для настройки приятного доменного имени XIP.IO. Это работает только если ваш Kubernetes Load Balancer имеет адрес IPv4.
ko delete -f config/post-install/default-domain.yaml --ignore-not-found
ko apply -f config/post-install/default-domain.yaml
Вышеупомянутый шаг эквивалентен применению файлов конфигурации serving-crds.yaml
, serving-core.yaml
, serving-hpa.yaml
и serving-nscert.yaml
для выпущенных версий Knative Serving.
Вы можете просмотреть запущенные службы с помощью:
kubectl -n knative-serving get pods
NAME READY STATUS RESTARTS AGE
activator-7454cd659f-rrz86 1/1 Running 0 105s
autoscaler-58cbfd4985-fl5h7 1/1 Running 0 105s
autoscaler-hpa-77964b9b8c-9sbgq 1/1 Running 0 105s
controller-847b7cc977-5mvvq 1/1 Running 0 105s
networking-ns-cert-56c58544db-sgstd 1/1 Running 0 105s
webhook-6b6c77567f-flr59 1/1 Running 0 105s
Для доступа к логам контроллера Knative Serving используйте следующую команду:
kubectl -n knative-serving logs $(kubectl -n knative-serving get pods -l app=controller -o name) -c controller
```Если вы используете проект Google Cloud Platform для хостинга вашего кластера Kubernetes, полезно проверить страницу
[Обнаружение и балансировка нагрузки](http://console.developers.google.com/kubernetes/discovery)
для обеспечения того, что все службы работают корректно (и не заблокированы из-за ограничений квоты, например).### Развертывание Knative Ingress
Knative поддерживает различные решения для Ingress.
Для простоты можно просто выполнить следующую команду для установки Kourier.
```bash
kubectl apply -f ./third_party/kourier-latest/kourier.yaml
kubectl patch configmap/config-network \
-n knative-serving \
--type merge \
-p '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'
Если вы хотите выбрать другое решение для Ingress, вы можете последовать за шагом 3 в документации по установке Knative для выбора альтернативного решения Ingress и его установки.
При внесении изменений в базу кода, следует обратить внимание на два специальных случая:
Если вы измените входной параметр сгенерированного кода, то вам нужно запустить
./hack/update-codegen.sh
. Входные данные включают:
// +k8s:deepcopy-gen=true
._example
карт конфигураций (для синхронизации аннотаций knative.dev/example-checksum
). Эти могут также быть отдельно обновлены с помощью ./hack/update-checksums.sh
..proto
. Выполните ./hack/update-codegen.sh
с флагом --generate-protobufs
, чтобы включить генерацию протокола буферов.Если вы измените зависимости пакета (включая добавление внешней зависимости), то вам нужно запустить
./hack/update-deps.sh
.Это оба идемпотентны, и мы ожидаем, что выполнение этих команд на HEAD
не приведёт к различиям. Генерация кода и зависимостей автоматически проверяется для отсутствия различий для каждого запроса на слияние.Команда update-deps.sh выполняет команды go get и mod. В некоторых случаях, если требуются более новые зависимости, вам потребуется выполнить go get вручную. При правильной конфигурации генератора кода и информации о зависимостях перезапуск контроллера выполняется следующей командой:
ko apply -f config/core/deployments/controller.yaml
Или вы можете полностью очистить систему и перезапустить Knative Serving
заново.
Для обновления существующих зависимостей выполните:
./hack/update-deps.sh --upgrade && ./hack/update-codegen.sh
Вы можете удалить все компоненты служб с помощью следующей команды:
ko delete --ignore-not-found=true \
-Rf config/core/ \
-f ./third_party/kourier-latest/kourier.yaml \
-f ./third_party/cert-manager-latest/cert-manager.yaml
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )