Документ объясняет, как создать среду разработки, чтобы вы могли приступить к
вкладу в Knative Serving
. Также
проверьте:
Следуйте инструкциям ниже, чтобы установить вашу среду разработки. Как только вы выполните эти требования, вы сможете делать изменения и развертывать свою версию Knative Serving!
Перед отправкой запроса на слияние также проверьте CONTRIBUTING.md.
Начните с создания учетной записи GitHub, затем настройте доступ к GitHub через SSH.
Вы должны установить следующие инструменты:
go
: Язык, на котором построен Knative Serving
(1.16 или выше)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
. - Если при использовании Minikube или Kind возникает ошибка ImagePullBackOff
, это может быть связано с невозможностью кластера запрашивать локально собранные образы из-за политик запроса образов. Для решения этой проблемы рассмотрите возможность включения локального регистра: для Minikube или для Kind. Примечание: вам потребуется аутентификация с помощью вашей переменной KO_DOCKER_REPO
перед отправкой образов. Выполните команду gcloud auth configure-docker
, если вы используете Google Container Registry, или docker login
, если вы используете Docker Hub.### Настройка окруженияЧтобы запустить своё окружение, вам потребуется установить следующую переменную окружения (мы рекомендуем добавить её в свой .bashrc
):
KO_DOCKER_REPO
: Докер-репозиторий, куда должны быть отправлены образы разработчика (например, gcr.io/[gcloud-project]
).KO_DOCKER_REPO
должна быть docker.io/<ваш_пользователь>
.Пример .bashrc
:
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, особенно если вы запускаете кластер Kubernetes на локальной машине. Мы рекомендуем выделение как минимум 6 процессорных ядер и 8 ГБ оперативной памяти при одиночной ноде установке Kubernetes, а также выделение как минимум 4 процессорных ядер и 8 ГБ оперативной памяти для каждой ноды при трёхнодовой установке Kubernetes. Пожалуйста, вернитесь к настройке вашего кластера, чтобы переопределить конфигурацию вашего кластера 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
а также их развертывание в вашем кластере Kubernetes. Если вы работаете локально,
установите KO_DOCKER_REPO=ko.local
(или KO_DOCKER_REPO=kind.local
соответственно),
чтобы избежать необходимости отправки ваших образов в реестр снаружи машины.- По умолчанию, ko
будет строить контейнерные образы для архитектуры вашего локального компьютера,
но если вам требуется сборка образов для другой платформы (ОС и архитектура),
вы можете предоставить флаг --platform
следующим образом:
# Описание использования
ko apply -f FILENAME [флаги]
# Пример использования
ko apply --selector knative.dev/crd-install=true -Rf config/core/ --platform linux/arm64
Запустите:
ko apply --selector knative.dev/crd-install=true -Rf config/core/
kubectl wait --for=condition=Established --all crd
ko apply -Rf config/core/
# Дополнительные шаги
# Запустите задачу после установки, чтобы установить приятное имя домена sslip.io. Это работает только если ваш Kubernetes LoadBalancer имеет 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 1m45s
autoscaler-58cbfd4985-fl5h7 1/1 Running 0 1m45s
autoscaler-hpa-77964b9b8c-9sbgq 1/1 Running 0 1m45s
controller-847b7cc977-5mvvq 1/1 Running 0 1m45s
webhook-6b6c77567f-flr59 1/1 Running 0 1m45s
Вы можете получить журналы контроллера Knative Serving с помощью:```shell kubectl -n knative-serving logs $(kubectl -n knnative-serving get pods -l app=controller -o name) -c controller
Если вы используете проект GCP для размещения своего кластера 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, следует следовать инструкциям в документации по установке 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
.- Если вы меняете поверхность PodSpec
, которую мы разрешаем в наших ресурсах, то вам нужно обновить соответствующий раздел
./hack/schemapatch-config.yaml
и запустить
./hack/update-schemas.sh
. Дополнительно:
Если новое поле добавлено после флага функциональности, то добавьте kubebuilder:validation:DropProperties
и kubebuilder:pruning:PreserveUnknownFields
как additionalMarkers
.
additionalMarkers:
# Часть флага функциональности - поэтому нам нужно исключить схему и сохранить неизвестные поля
- kubebuilder:validation:DropProperties
- kubebuilder:pruning:PreserveUnknownFields
Это все идемпотентные операции, и мы ожидаем, что выполнение этих команд в вершине (HEAD
) не приведёт к различиям. Генерация кода и зависимости автоматически проверяются для отсутствия различий для каждого запроса на вытягивание (pull request).
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 )