Skip to content

Commit fb2dcf5

Browse files
Merge branch 'kubernetes-sigs:main' into test-cases
2 parents cc89e72 + ce2785c commit fb2dcf5

File tree

8 files changed

+253
-71
lines changed

8 files changed

+253
-71
lines changed

.github/ISSUE_TEMPLATE/new-release.md

+142-37
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,147 @@ about: Propose a new release
44
title: Release v0.x.0
55
labels: ''
66
assignees: ''
7-
87
---
98

10-
## Release Checklist
11-
- [ ] For major or minor releases (v$MAJ.$MIN.0), create a new release branch.
12-
- [ ] A maintainer creates a vanilla release branch with
13-
`git branch release-$MAJ.$MIN main`
14-
- [ ] A maintainer pushes the new release branch with
15-
`git push release-$MAJ.$MIN` (e.g., release-0.1)
16-
- [ ] Update content and artifacts such as README, deployment templates, docs, configuration, test/e2e flags.
17-
Submit a PR against the release branch.
18-
- [ ] A maintainer [prepares a draft release](https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases)
19-
- [ ] Write the change log into the draft release.
20-
- [ ] Run
21-
`make artifacts`
22-
to generate the artifacts and upload the files in the `artifacts` folder to the draft release.
23-
- [ ] A maintainer creates a signed tag running (e.g., VERSION=v0.1.0)
24-
`git tag -s $VERSION`
25-
and inserts the changelog into the tag description.
26-
To perform this step, you need [a PGP key registered on github](https://docs.github.com/en/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys).
27-
- [ ] A maintainer pushes the tag with
28-
`git push $VERSION`
29-
- Triggers prow to build and publish a staging container image
30-
[`us-central1-docker.pkg.dev/k8s-staging-images/llm-instance-gateway/epp:$VERSION`](https://us-central1-docker.pkg.dev/k8s-staging-images/llm-instance-gateway/epp)
31-
- [ ] Submit a PR against [k8s.io](https://github.com/kubernetes/k8s.io),
32-
updating [`k8s-staging-gateway-api-inference-extension/images.yaml`](https://github.com/kubernetes/k8s.io/blob/main/registry.k8s.io/images/k8s-staging-gateway-api-inference-extension/images.yaml) to
33-
promote the container images from staging to production. <!-- link to example PR once we have one -->
34-
- [ ] Wait for the PR to be merged and verify that the image `registry.k8s.io/gateway-api-inference-extension/epp:$VERSION` is available.
35-
- [ ] Publish the draft release prepared at the [Github releases page](https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases).
36-
- [ ] Add a link to the tagged release in this issue: <!-- example https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/tag/v0.1.0 -->
37-
- [ ] Send an announcement email to `[email protected]` and `[email protected]` with the subject `[ANNOUNCE] Gateway API Inference Extension $VERSION is released`
38-
- [ ] Add a link to the release announcement in this issue: <!-- link to an example email once we have one -->
39-
- [ ] Update docs in `main` branch: <!-- link to example PR once we have one -->
40-
- [ ] Close this issue
41-
42-
## Changelog
43-
<!--
44-
Describe changes since the last release here.
45-
-->
9+
- [Introduction](#introduction)
10+
- [Prerequisites](#prerequisites)
11+
- [Release Process](#release-process)
12+
- [Announce the Release](#announce-the-release)
13+
- [Final Steps](#final-steps)
14+
15+
## Introduction
16+
17+
This document defines the process for releasing Gateway API Inference Extension.
18+
19+
## Prerequisites
20+
21+
1. Permissions to push to the Gateway API Inference Extension repository.
22+
23+
2. Set the required environment variables based on the expected release number:
24+
25+
```shell
26+
export MAJOR=0
27+
export MINOR=1
28+
export REMOTE=origin
29+
```
30+
31+
3. If creating a release candidate, set the release candidate number.
32+
33+
```shell
34+
export RC=1
35+
```
36+
37+
4. The vLLM image tag defaults to `v0.7.1` for a release. Optionally, change the vLLM image tag. For example:
38+
39+
```shell
40+
export VLLM=0.7.2
41+
```
42+
43+
## Release Process
44+
45+
1. If needed, clone the Gateway API Inference Extension [repo][repo].
46+
47+
```shell
48+
git clone https://github.com/kubernetes-sigs/gateway-api-inference-extension.git -b main
49+
```
50+
51+
2. If you already have the repo cloned, ensure it’s up-to-date and your local branch is clean.
52+
53+
3. Create a new release branch from the `main` branch. The release branch should be named `release-v${MAJOR}.${MINOR}`, e.g. `release-v0.1`.
54+
55+
```shell
56+
git checkout -b release-v${MAJOR}.${MINOR}
57+
```
58+
59+
4. Update release-specific content, generate release artifacts, and stage the changes.
60+
61+
```shell
62+
make release
63+
```
64+
65+
5. Sign, commit, and push the changes to the Gateway API Inference Extension repo.
66+
67+
For a release candidate:
68+
69+
```shell
70+
git commit -s -m "Updates artifacts for v${MAJOR}.${MINOR}.0-rc.${RC} release"
71+
```
72+
73+
For a major or minor release:
74+
75+
```shell
76+
git commit -s -m "Updates artifacts for v${MAJOR}.${MINOR}.0 release"
77+
```
78+
79+
6. Push your release branch to the Gateway API Inference Extension remote.
80+
81+
```shell
82+
git push ${REMOTE} release-v${MAJOR}.${MINOR}
83+
```
84+
85+
7. Tag the head of your release branch with the number.
86+
87+
For a release candidate:
88+
89+
```shell
90+
git tag -a v${MAJOR}.${MINOR}.0-rc.${RC} -m 'Gateway API Inference Extension v${MAJOR}.${MINOR}.0-rc.${RC} Release Candidate'
91+
```
92+
93+
For a major or minor release:
94+
95+
```shell
96+
git tag -a v${MAJOR}.${MINOR}.0 -m 'Gateway API Inference Extension v${MAJOR}.${MINOR}.0 Release'
97+
```
98+
99+
**Note:** A PGP key must be [registered] to your GitHub account.
100+
101+
8. Push the tag to the Gateway API Inference Extension repo.
102+
103+
For a release candidate:
104+
105+
```shell
106+
git push ${REMOTE} v${MAJOR}.${MINOR}.0-rc.${RC}
107+
```
108+
109+
For a major or minor release:
110+
111+
```shell
112+
git push ${REMOTE} v${MAJOR}.${MINOR}.0
113+
```
114+
115+
9. Pushing the tag triggers Prow to build and publish the container image to the [staging registry][].
116+
10. Submit a PR against [k8s.io][] to add the staging image tag and SHA to [`k8s-staging-gateway-api-inference-extension/images.yaml`][yaml]. This will
117+
promote the image to the production registry. **Note:** Add a link to this issue when the PR is merged.
118+
11. Test the steps in the tagged quickstart guide after the PR merges, for example: `https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/v0.1.0-rc.1/pkg/README.md`.
119+
12. Create a [new release][]:
120+
1. Choose the tag that you created for the release.
121+
2. Use the tag as the release title, i.e. `v0.1.0` refer to previous release for the content of the release body.
122+
3. Click "Generate release notes" and preview the release body.
123+
4. Click "Attach binaries by dropping them here or selecting them." and add the contents of the `artifacts` directory generated from `make release`.
124+
5. If this is a release candidate, select the "This is a pre-release" checkbox.
125+
13. If you find any bugs in this process, create an [issue][].
126+
127+
## Announce the Release
128+
129+
Use the following steps to announce the release.
130+
131+
1. Send an announcement email to `[email protected]` and `[email protected]` with the subject:
132+
133+
```shell
134+
[ANNOUNCE] Gateway API Inference Extension v${MAJOR}.${MINOR}.0 is released
135+
```
136+
137+
2. Add a link to the release announcement in this issue. <!-- link to an example email once we have one -->
138+
139+
## Final Steps
140+
141+
1. Update docs in the `main` branch. <!-- link to example PR once we have one -->
142+
2. Close this issue.
143+
144+
[repo]: https://github.com/kubernetes-sigs/gateway-api-inference-extension
145+
[staging registry]: https://console.cloud.google.com/artifacts/docker/k8s-staging-images/us-central1/gateway-api-inference-extension/epp
146+
[new release]: https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/new
147+
[registered]: https://docs.github.com/en/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys
148+
[k8s.io]: https://github.com/kubernetes/k8s.io
149+
[yaml]: https://github.com/kubernetes/k8s.io/blob/main/registry.k8s.io/images/k8s-staging-gateway-api-inference-extension/images.yaml
150+
[issue]: https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/new/choose

Makefile

+9-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ PLATFORMS ?= linux/amd64
2626
DOCKER_BUILDX_CMD ?= docker buildx
2727
IMAGE_BUILD_CMD ?= $(DOCKER_BUILDX_CMD) build
2828
IMAGE_BUILD_EXTRA_OPTS ?=
29-
IMAGE_REGISTRY ?= us-central1-docker.pkg.dev/k8s-staging-images/llm-instance-gateway
29+
IMAGE_REGISTRY ?= us-central1-docker.pkg.dev/k8s-staging-images/gateway-api-inference-extension
3030
IMAGE_NAME := epp
3131
IMAGE_REPO ?= $(IMAGE_REGISTRY)/$(IMAGE_NAME)
3232
IMAGE_TAG ?= $(IMAGE_REPO):$(GIT_TAG)
@@ -84,7 +84,6 @@ code-generator:
8484
cp -f $(CODEGEN_ROOT)/generate-internal-groups.sh $(PROJECT_DIR)/bin/
8585
cp -f $(CODEGEN_ROOT)/kube_codegen.sh $(PROJECT_DIR)/bin/
8686

87-
8887
.PHONY: fmt
8988
fmt: ## Run go fmt against code.
9089
go fmt ./...
@@ -155,7 +154,6 @@ image-build:
155154
image-push: PUSH=--push
156155
image-push: image-build
157156

158-
159157
##@ Docs
160158

161159
.PHONY: build-docs
@@ -196,13 +194,21 @@ uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified
196194
$(KUSTOMIZE) build config/crd | $(KUBECTL) delete --ignore-not-found=$(ignore-not-found) -f -
197195

198196
##@ Release
197+
198+
.PHONY: release-quickstart
199+
release-quickstart: ## Update the quickstart guide for a release.
200+
./hack/release-quickstart.sh
201+
199202
.PHONY: artifacts
200203
artifacts: kustomize
201204
if [ -d artifacts ]; then rm -rf artifacts; fi
202205
mkdir -p artifacts
203206
$(KUSTOMIZE) build config/crd -o artifacts/manifests.yaml
204207
@$(call clean-manifests)
205208

209+
.PHONY: release
210+
release: artifacts release-quickstart verify test # Create a release.
211+
206212
##@ Dependencies
207213

208214
## Location to install dependencies to

api/v1alpha1/inferencemodel_types.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ type InferenceModelConditionType string
202202
type InferenceModelConditionReason string
203203

204204
const (
205-
// This condition indicates if the model config is accepted, and if not, why.
205+
// ModelConditionAccepted indicates if the model config is accepted, and if not, why.
206206
//
207207
// Possible reasons for this condition to be True are:
208208
//
@@ -218,14 +218,14 @@ const (
218218
//
219219
ModelConditionAccepted InferenceModelConditionType = "Accepted"
220220

221-
// Desired state. Model conforms to the state of the pool.
221+
// ModelReasonAccepted is the desired state. Model conforms to the state of the pool.
222222
ModelReasonAccepted InferenceModelConditionReason = "Accepted"
223223

224-
// This reason is used when a given ModelName already exists within the pool.
224+
// ModelReasonNameInUse is used when a given ModelName already exists within the pool.
225225
// Details about naming conflict resolution are on the ModelName field itself.
226226
ModelReasonNameInUse InferenceModelConditionReason = "ModelNameInUse"
227227

228-
// This reason is the initial state, and indicates that the controller has not yet reconciled the InferenceModel.
228+
// ModelReasonPending is the initial state, and indicates that the controller has not yet reconciled the InferenceModel.
229229
ModelReasonPending InferenceModelConditionReason = "Pending"
230230
)
231231

api/v1alpha1/inferencepool_types.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ type InferencePoolConditionType string
207207
type InferencePoolConditionReason string
208208

209209
const (
210-
// This condition indicates if the pool is ready to accept traffic, and if not, why.
210+
// PoolConditionReady indicates if the pool is ready to accept traffic, and if not, why.
211211
//
212212
// Possible reasons for this condition to be True are:
213213
//
@@ -223,13 +223,13 @@ const (
223223
//
224224
PoolConditionReady InferencePoolConditionType = "Ready"
225225

226-
// Desired state. The pool and its components are initialized and ready for traffic.
226+
// PoolReasonReady is the desired state. The pool and its components are initialized and ready for traffic.
227227
PoolReasonReady InferencePoolConditionReason = "Ready"
228228

229-
// This reason is used when the EPP has not yet passed health checks, or has started failing them.
229+
// PoolReasonEPPNotHealthy is used when the EPP has not yet passed health checks, or has started failing them.
230230
PoolReasonEPPNotHealthy InferencePoolConditionReason = "EndpointPickerNotHealthy"
231231

232-
// This reason is the initial state, and indicates that the controller has not yet reconciled this pool.
232+
// PoolReasonPending is the initial state, and indicates that the controller has not yet reconciled this pool.
233233
PoolReasonPending InferencePoolConditionReason = "Pending"
234234
)
235235

go.mod

+7-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ toolchain go1.23.2
77
require (
88
github.com/bojand/ghz v0.120.0
99
github.com/elastic/crd-ref-docs v0.1.0
10-
github.com/envoyproxy/go-control-plane/envoy v1.32.3
10+
github.com/envoyproxy/go-control-plane/envoy v1.32.4
1111
github.com/google/go-cmp v0.6.0
1212
github.com/jhump/protoreflect v1.17.0
1313
github.com/onsi/ginkgo/v2 v2.22.2
@@ -29,6 +29,7 @@ require (
2929
k8s.io/utils v0.0.0-20241210054802-24370beab758
3030
sigs.k8s.io/controller-runtime v0.20.1
3131
sigs.k8s.io/structured-merge-diff/v4 v4.5.0
32+
sigs.k8s.io/yaml v1.4.0
3233
)
3334

3435
require (
@@ -53,7 +54,7 @@ require (
5354
github.com/dustin/go-humanize v1.0.1 // indirect
5455
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
5556
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 // indirect
56-
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
57+
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
5758
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
5859
github.com/fatih/color v1.16.0 // indirect
5960
github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -104,7 +105,6 @@ require (
104105
github.com/spf13/cobra v1.8.1 // indirect
105106
github.com/spf13/pflag v1.0.5 // indirect
106107
github.com/stoewer/go-strcase v1.3.0 // indirect
107-
github.com/stretchr/objx v0.5.2 // indirect
108108
github.com/x448/float16 v0.8.4 // indirect
109109
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
110110
go.opentelemetry.io/otel v1.32.0 // indirect
@@ -115,14 +115,14 @@ require (
115115
go.opentelemetry.io/otel/trace v1.32.0 // indirect
116116
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
117117
go.uber.org/zap v1.27.0 // indirect
118-
golang.org/x/crypto v0.31.0 // indirect
118+
golang.org/x/crypto v0.32.0 // indirect
119119
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
120120
golang.org/x/mod v0.22.0 // indirect
121-
golang.org/x/net v0.33.0 // indirect
121+
golang.org/x/net v0.34.0 // indirect
122122
golang.org/x/oauth2 v0.24.0 // indirect
123123
golang.org/x/sync v0.10.0 // indirect
124-
golang.org/x/sys v0.28.0 // indirect
125-
golang.org/x/term v0.27.0 // indirect
124+
golang.org/x/sys v0.29.0 // indirect
125+
golang.org/x/term v0.28.0 // indirect
126126
golang.org/x/text v0.21.0 // indirect
127127
golang.org/x/time v0.7.0 // indirect
128128
golang.org/x/tools v0.28.0 // indirect
@@ -140,5 +140,4 @@ require (
140140
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect
141141
sigs.k8s.io/controller-tools v0.14.0 // indirect
142142
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
143-
sigs.k8s.io/yaml v1.4.0 // indirect
144143
)

0 commit comments

Comments
 (0)