1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/knative-serving

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
DEVELOPMENT.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 20:04 49c5c47

Разработка

Документ объясняет, как создать среду разработки, чтобы вы могли приступить к вкладу в Knative Serving. Также проверьте:

Предварительные требования

Следуйте инструкциям ниже, чтобы установить вашу среду разработки. Как только вы выполните эти требования, вы сможете делать изменения и развертывать свою версию Knative Serving!

Перед отправкой запроса на слияние также проверьте CONTRIBUTING.md.

Создайте учетную запись GitHub

Начните с создания учетной записи GitHub, затем настройте доступ к GitHub через SSH.

Установка требуемых инструментов

Вы должны установить следующие инструменты:

  1. go: Язык, на котором построен Knative Serving (1.14 или выше)
  2. git: Для контроля версий
  3. ko: Для разработки
  4. kubectl: Для управления средами разработки
  5. bash 4 или выше. На macOS стандартная версия bash слишком старая, вы можете использовать Homebrew для установки более новой версии.

Если вы работаете над и изменяете файлы .proto:1. protoc: Для компиляции протоколов буферов.

  1. protoc-gen-gogofaster: Для генерации эффективного кода на Go из протоколов буферов.

Создание кластера и репозитория

  1. Настройка кластера Kubernetes

    • Минимальная поддерживаемая версия — Yöntem 1.18.0
    • Следуйте инструкциям в документации Kubernetes.
  2. Настройте репозиторий Docker для отправки образов. Вы можете использовать любой контейнерный регистр образов, настроив методы аутентификации и пути репозиториев, указанные ниже.

    • Быстрый старт Google Container Registry
    • Быстрый старт Docker Hub
    • При локальном разработке с использованием Docker или Minikube вы можете установить 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=...

  1. $GOPATH/bin в PATH: Это необходимо для корректной работы инструментов, установленных через go get.
  2. KO_DOCKER_REPO: Директория Docker-репозитория, куда должны быть отправлены образы разработчика (например, gcr.io/[gcloud-project]).
  • Примечание: если вы используете Docker Hub для хранения своих образов, переменная KO_DOCKER_REPO должна быть docker.io/<username>.
  • Примечание: В настоящее время Docker Hub не позволяет создавать подпапки под вашим именем пользователя.

Пример конфигурации в .bashrc:

export GOPATH="$HOME/go"
export PATH="${PATH}:${GOPATH}/bin"
export KO_DOCKER_REPO='gcr.io/my-gcloud-project-id'

Клонирование вашего форка

Для клонирования этого репозитория:

  1. Создайте свой форк этого репозитория
  2. Клонируйте его на ваш компьютер:
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. Обратите внимание, что если вы уже установили Knative в своем кластере, повторное развертывание новой версии должно пройти успешно, но если возникнут проблемы, вы можете легко очистить свой кластер и попробовать снова.Перейдите в директорию serving, чтобы установить следующие компоненты.

Настройка cluster-admin

Ваш пользователь должен иметь права cluster-admin для выполнения требуемых настроек для Knative. По умолчанию это должно быть так, если вы самостоятельно развернули свой кластер Kubernetes. В частности, вам потребуется возможность создания объектов типа Namespace, CustomResourceDefinition, ClusterRole и ClusterRoleBinding уровня кластера.

Распределение ресурсов для Kubernetes

Пожалуйста, выделите достаточное количество ресурсов для Kubernetes, особенно если вы запускаете кластер Kubernetes на локальной машине. Мы рекомендуем выделить как минимум 6 процессорных ядер и 8 ГБ оперативной памяти при одиночной установке Kubernetes, а также как минимум 4 процессорных ядра и 8 ГБ оперативной памяти для каждого узла при трёхузловой установке Kubernetes. В случае необходимости вернитесь к настройке вашего кластера Kubernetes для переconfiguration вашего кластера Kubernetes в вашей среде.

Развертывание cert-manager

  1. Развернуть 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

Развертывание Knative ServingЭтот шаг включает сборку Knative Serving, создание и отправку образов разработчиков, а также развертывание их в вашем кластере Kubernetes. Если вы работаете локально (например, используя Docker-on-Mac), установите 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. Входные данные включают:

    • Определения типов API в pkg/apis/serving/v1/.
    • Определения типов, аннотированных с // +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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/knative-serving.git
git@api.gitlife.ru:oschina-mirror/knative-serving.git
oschina-mirror
knative-serving
knative-serving
main