From 3fb9a1fc29cfdc038e2540cf9021255c08deb4d7 Mon Sep 17 00:00:00 2001 From: Rob Scott Date: Sat, 14 Dec 2024 02:38:57 +0000 Subject: [PATCH] Adding initial docs infra --- .gitignore | 3 + Makefile | 12 + hack/mkdocs/image/Dockerfile | 26 ++ hack/mkdocs/image/entrypoint.sh | 28 ++ hack/mkdocs/image/requirements.txt | 25 ++ mkdocs.yml | 72 +++++ site-src/.mkdocs-exclude | 6 + site-src/OWNERS | 10 + site-src/api-types/inferencemodel.md | 14 + site-src/api-types/inferencepool.md | 14 + site-src/concepts/api-overview.md | 3 + site-src/concepts/glossary.md | 3 + site-src/concepts/roles-and-personas.md | 3 + site-src/concepts/use-cases.md | 3 + site-src/contributing/devguide.md | 3 + site-src/contributing/index.md | 3 + site-src/faq.md | 3 + site-src/gieps/giep-116/index.md | 47 +++ site-src/gieps/giep-116/metadata.yaml | 32 +++ site-src/gieps/overview.md | 272 ++++++++++++++++++ site-src/guides/implementers.md | 3 + site-src/guides/index.md | 3 + .../logo/logo-text-large-horizontal-white.png | Bin 0 -> 10531 bytes site-src/implementations.md | 3 + site-src/index.md | 3 + site-src/overrides/partials/header.html | 117 ++++++++ site-src/reference/spec.md | 5 + site-src/stylesheets/extra.css | 43 +++ 28 files changed, 759 insertions(+) create mode 100644 hack/mkdocs/image/Dockerfile create mode 100755 hack/mkdocs/image/entrypoint.sh create mode 100644 hack/mkdocs/image/requirements.txt create mode 100644 mkdocs.yml create mode 100644 site-src/.mkdocs-exclude create mode 100644 site-src/OWNERS create mode 100644 site-src/api-types/inferencemodel.md create mode 100644 site-src/api-types/inferencepool.md create mode 100644 site-src/concepts/api-overview.md create mode 100644 site-src/concepts/glossary.md create mode 100644 site-src/concepts/roles-and-personas.md create mode 100644 site-src/concepts/use-cases.md create mode 100644 site-src/contributing/devguide.md create mode 100644 site-src/contributing/index.md create mode 100644 site-src/faq.md create mode 100644 site-src/gieps/giep-116/index.md create mode 100644 site-src/gieps/giep-116/metadata.yaml create mode 100644 site-src/gieps/overview.md create mode 100644 site-src/guides/implementers.md create mode 100644 site-src/guides/index.md create mode 100644 site-src/images/logo/logo-text-large-horizontal-white.png create mode 100644 site-src/implementations.md create mode 100644 site-src/index.md create mode 100644 site-src/overrides/partials/header.html create mode 100644 site-src/reference/spec.md create mode 100644 site-src/stylesheets/extra.css diff --git a/.gitignore b/.gitignore index d633a1b..ece4732 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ go.work.sum *.swp *.swo *~ + +# generated docs +site \ No newline at end of file diff --git a/Makefile b/Makefile index de28e47..fa7cc9d 100644 --- a/Makefile +++ b/Makefile @@ -134,6 +134,18 @@ build-installer: manifests generate kustomize ## Generate a consolidated YAML wi cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} $(KUSTOMIZE) build config/default > dist/install.yaml +##@ Docs + +.PHONY: build-docs +build-docs: + docker build --pull -t gaie/mkdocs hack/mkdocs/image + docker run --rm -v ${PWD}:/docs gaie/mkdocs build + +.PHONY: live-docs +live-docs: + docker build -t gaie/mkdocs hack/mkdocs/image + docker run --rm -it -p 3000:3000 -v ${PWD}:/docs gaie/mkdocs + ##@ Deployment ifndef ignore-not-found diff --git a/hack/mkdocs/image/Dockerfile b/hack/mkdocs/image/Dockerfile new file mode 100644 index 0000000..87e5bd7 --- /dev/null +++ b/hack/mkdocs/image/Dockerfile @@ -0,0 +1,26 @@ +# Copyright 2019 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM python:3.13-alpine + +COPY requirements.txt /requirements.txt +RUN pip install -r /requirements.txt + +WORKDIR /docs + +EXPOSE 3000 + +COPY entrypoint.sh / + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/hack/mkdocs/image/entrypoint.sh b/hack/mkdocs/image/entrypoint.sh new file mode 100755 index 0000000..9e7accc --- /dev/null +++ b/hack/mkdocs/image/entrypoint.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# Copyright 2019 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o pipefail + +CMD=$1 + +if [ "$CMD" == "build" ]; +then + mkdocs build + exit 0; +fi + +mkdocs serve --dev-addr=0.0.0.0:3000 --livereload \ No newline at end of file diff --git a/hack/mkdocs/image/requirements.txt b/hack/mkdocs/image/requirements.txt new file mode 100644 index 0000000..e7cb9b0 --- /dev/null +++ b/hack/mkdocs/image/requirements.txt @@ -0,0 +1,25 @@ +# required for mkdocs-core +jinja2~=3.0 +# mkdocs 2.4.1 requires Markdown < 3.4.0 +# https://github.com/kubernetes-sigs/gateway-api/pull/1671#issuecomment-1400586465 +markdown~=3.7 +mkdocs~=1.6 +mkdocs-material-extensions~=1.3 +pygments~=2.16 +pymdown-extensions~=10.2 + +# Requirements for plugins +babel~=2.10 +colorama~=0.4 +paginate~=0.5 +regex>=2022.4 +requests~=2.26 + +# mkdocs + mkdocs plugins +mkdocs==1.6.1 +mkdocs-awesome-pages-plugin==2.9.3 +mkdocs-macros-plugin==1.2.0 +mkdocs-material==9.5.36 +mkdocs-material-extensions==1.3.1 +mkdocs-redirects==1.2.1 +mkdocs-mermaid2-plugin==1.1.1 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..f122d7d --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,72 @@ +site_name: Kubernetes Gateway API Inference Extension +repo_url: https://github.com/kubernetes-sigs/gateway-api-inference-extension +repo_name: kubernetes-sigs/gateway-api-inference-extension +site_dir: site +docs_dir: site-src +extra_css: + - stylesheets/extra.css +theme: + name: material + icon: + repo: fontawesome/brands/git-alt + logo: images/logo/logo-text-large-horizontal-white.png + favicon: images/k8s-favicon.png + features: + - search.highlight + - navigation.tabs + - navigation.top + - navigation.expand + palette: + primary: custom + custom_dir: site-src/overrides +edit_uri: edit/main/site-src/ +plugins: + - search + - awesome-pages + - macros: + include_dir: examples + j2_line_comment_prefix: "#$" + - mermaid2 +markdown_extensions: + - admonition + - meta + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg + - pymdownx.details + - pymdownx.highlight + - pymdownx.inlinehilite + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.snippets + - toc: + permalink: true + - tables +nav: + - Overview: + - Introduction: index.md + - Concepts: + API Overview: concepts/api-overview.md + Conformance: concepts/conformance.md + Roles and Personas: concepts/roles-and-personas.md + Use Cases: concepts/use-cases.md + - Implementations: implementations.md + - FAQ: faq.md + - Glossary: concepts/glossary.md + - Guides: + - User Guides: + - Getting started: guides/index.md + - Implementer's Guide: guides/implementers.md + - Reference: + - API Types: + - InferencePool: api-types/inferencepool.md + - InferenceModel: api-types/inferencemodel.md + - API specification: reference/spec.md + - Enhancements: + - Overview: gieps/overview.md + - Contributing: + - How to Get Involved: contributing/index.md + - Developer Guide: contributing/devguide.md diff --git a/site-src/.mkdocs-exclude b/site-src/.mkdocs-exclude new file mode 100644 index 0000000..9a2dd76 --- /dev/null +++ b/site-src/.mkdocs-exclude @@ -0,0 +1,6 @@ +.mkdocs-exclude +.nojekyll +.placeholder +search/search_index.json +sitemap.xml.gz +sitemap.xml diff --git a/site-src/OWNERS b/site-src/OWNERS new file mode 100644 index 0000000..f866d12 --- /dev/null +++ b/site-src/OWNERS @@ -0,0 +1,10 @@ +# See the OWNERS docs at https://go.k8s.io/owners +# See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES for a list of members for each alias. + +approvers: + - sig-network-leads + - gateway-api-maintainers + +reviewers: + - gateway-api-maintainers + - gateway-api-mesh-leads diff --git a/site-src/api-types/inferencemodel.md b/site-src/api-types/inferencemodel.md new file mode 100644 index 0000000..12a351b --- /dev/null +++ b/site-src/api-types/inferencemodel.md @@ -0,0 +1,14 @@ +# Inference Model + +??? example "Alpha since v0.1.0" + + The `InferenceModel` resource is alpha and may have breaking changes in + future releases of the API. + +## Background + +TODO + +## Spec + +TODO \ No newline at end of file diff --git a/site-src/api-types/inferencepool.md b/site-src/api-types/inferencepool.md new file mode 100644 index 0000000..b1fc339 --- /dev/null +++ b/site-src/api-types/inferencepool.md @@ -0,0 +1,14 @@ +# Inference Pool + +??? example "Alpha since v0.1.0" + + The `InferencePool` resource is alpha and may have breaking changes in + future releases of the API. + +## Background + +TODO + +## Spec + +TODO \ No newline at end of file diff --git a/site-src/concepts/api-overview.md b/site-src/concepts/api-overview.md new file mode 100644 index 0000000..f7b50d8 --- /dev/null +++ b/site-src/concepts/api-overview.md @@ -0,0 +1,3 @@ +# API Overview + +TODO \ No newline at end of file diff --git a/site-src/concepts/glossary.md b/site-src/concepts/glossary.md new file mode 100644 index 0000000..f8bd25c --- /dev/null +++ b/site-src/concepts/glossary.md @@ -0,0 +1,3 @@ +# Gateway API Glossary + +TODO \ No newline at end of file diff --git a/site-src/concepts/roles-and-personas.md b/site-src/concepts/roles-and-personas.md new file mode 100644 index 0000000..4a344e1 --- /dev/null +++ b/site-src/concepts/roles-and-personas.md @@ -0,0 +1,3 @@ +# Roles and Personas + +TODO \ No newline at end of file diff --git a/site-src/concepts/use-cases.md b/site-src/concepts/use-cases.md new file mode 100644 index 0000000..af7246d --- /dev/null +++ b/site-src/concepts/use-cases.md @@ -0,0 +1,3 @@ +# Use Cases + +TODO \ No newline at end of file diff --git a/site-src/contributing/devguide.md b/site-src/contributing/devguide.md new file mode 100644 index 0000000..bc0ceab --- /dev/null +++ b/site-src/contributing/devguide.md @@ -0,0 +1,3 @@ +# Developer Guide + +TODO \ No newline at end of file diff --git a/site-src/contributing/index.md b/site-src/contributing/index.md new file mode 100644 index 0000000..968022f --- /dev/null +++ b/site-src/contributing/index.md @@ -0,0 +1,3 @@ +# How to Get Involved + +TODO \ No newline at end of file diff --git a/site-src/faq.md b/site-src/faq.md new file mode 100644 index 0000000..100afe4 --- /dev/null +++ b/site-src/faq.md @@ -0,0 +1,3 @@ +# Frequently Asked Questions (FAQ) + +TODO \ No newline at end of file diff --git a/site-src/gieps/giep-116/index.md b/site-src/gieps/giep-116/index.md new file mode 100644 index 0000000..4d678da --- /dev/null +++ b/site-src/gieps/giep-116/index.md @@ -0,0 +1,47 @@ +# GIEP-116: GIEP template + +* Issue: [#0](https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/116) +* Status: Provisional|Implementable|Experimental|Standard|Deferred|Rejected|Withdrawn|Replaced + +(See status definitions [here](overview.md#status).) + +## TLDR + +(1-2 sentence summary of the proposal) + +## Goals + +(Primary goals of this proposal.) + +## Non-Goals + +(What is out of scope for this proposal.) + +## Introduction + +(Can link to external doc -- but we should bias towards copying +the content into the GEP as online documents are easier to lose +-- e.g. owner messes up the permissions, accidental deletion) + +## API + +(... details, can point to PR with changes) + +## Conformance Details + +(This section describes the names to be used for the feature or +features in conformance tests and profiles. + +These should be `CamelCase` names that specify the feature as +precisely as possible, and are particularly important for +Extended features, since they may be surfaced to users.) + +## Alternatives + +(List other design alternatives and why we did not go in that +direction) + +## References + +(Add any additional document links. Again, we should try to avoid +too much content not in version control to avoid broken links) diff --git a/site-src/gieps/giep-116/metadata.yaml b/site-src/gieps/giep-116/metadata.yaml new file mode 100644 index 0000000..56d1018 --- /dev/null +++ b/site-src/gieps/giep-116/metadata.yaml @@ -0,0 +1,32 @@ +apiVersion: internal.gateway.networking.k8s.io/v1alpha1 +kind: GIEPDetails +number: 116 +name: GIEP template +status: Completed +# Any authors who contribute to the GEP in any way should be listed here using +# their Github handle. +authors: + - robscott +relationships: + # obsoletes indicates that a GEP makes the linked GEP obsolete, and completely + # replaces that GEP. The obsoleted GEP MUST have its obsoletedBy field + # set back to this GEP, and MUST be moved to Declined. + obsoletes: {} + obsoletedBy: {} + # extends indicates that a GEP extends the linkned GEP, adding more detail + # or additional implementation. The extended GEP MUST have its extendedBy + # field set back to this GEP. + extends: {} + extendedBy: {} + # seeAlso indicates other GEPs that are relevant in some way without being + # covered by an existing relationship. + seeAlso: {} +# references is a list of hyperlinks to relevant external references. +# It's intended to be used for storing Github discussions, Google docs, etc. +references: {} +# featureNames is a list of the feature names introduced by the GEP, if there +# are any. This will allow us to track which feature was introduced by which GEP. +featureNames: {} +# changelog is a list of hyperlinks to PRs that make changes to the GEP, in +# ascending date order. +changelog: {} diff --git a/site-src/gieps/overview.md b/site-src/gieps/overview.md new file mode 100644 index 0000000..438a0ff --- /dev/null +++ b/site-src/gieps/overview.md @@ -0,0 +1,272 @@ +# Gateway Inference Enhancement Proposal (GIEP) + +Gateway Inference Enhancement Proposals (GIEPs) serve a similar purpose to the +[GIEP](https://gateway-api.sigs.k8s.io/GIEPs/overview/) process for the main +Gateway API project: + +1. Ensure that changes to the API follow a known process and discussion in the + OSS community. +1. Make changes and proposals discoverable (current and future). +1. Document design ideas, tradeoffs, decisions that were made for historical + reference. +1. Record the results of larger community discussions. +1. Record changes to the GIEP process itself. + +## Process + +This diagram shows the state diagram of the GIEP process at a high level, but +the details are below. + +
+ +```mermaid +flowchart TD + D([Discuss with
the community]) --> C + C([Issue Created]) -------> Memorandum + C([Issue Created]) --> Provisional + Provisional -->|If practical
work needed| Prototyping + Provisional -->|GIEP Doc PR
done| Implementable + Prototyping -->|GIEP Doc PR
done| Implementable + Implementable -->|Gateway API
work completed| Experimental + Experimental -->|Supported in
multiple implementations
+ Conformance tests| Standard + Standard -->|Entire change is GA or implemented| Completed +``` + +
+ +## GIEP Definitions + +### GIEP States + +Each GIEP has a state, which tracks where it is in the GIEP process. + +GIEPs can move to some states from any other state: + + * **Declined**: The GIEP has been declined and further work will not occur. + * **Deferred:** We do not currently have bandwidth to handle this GIEP, it may + be revisited in the future. + * **Declined:** This proposal was considered by the community but ultimately + rejected. + * **Withdrawn:** This proposal was considered by the community but ultimately + withdrawn by the author. + +There is a special state to cover Memorandum GIEPs: + + * **Memorandum**: These GIEPs either: + * Document an agreement for further work, creating no spec changes + themselves, or + * Update the GIEP process. + +API GIEPs flow through a number of states, which generally correspond to the +level of stability of the change described in the GIEP: + + * **Provisional:** The goals described by this GIEP have consensus but + implementation details have not been agreed to yet. + * **Prototyping:** An extension of `Provisional` which can be opted in to in + order to indicate to the community that there are some active practical + tests and experiments going on which are intended to be a part of the + development of this GIEP. This may include APIs or code, but that content + _must_ not be distributed with releases. + * **Implementable:** The goals and implementation details described by this + GIEP have consensus but have not been fully implemented yet. + * **Experimental:** This GIEP has been implemented and is part of the + "Experimental" release channel. Breaking changes are still possible, up to + and including complete removal and moving to `Rejected`. + * **Standard:** This GIEP has been implemented and is part of the "Standard" + release channel. It should be quite stable. + * **Completed**: All implementation work on this API GIEP has been completed. + +### Relationships between GIEPs + +GIEPs can have relationships between them. At this time, there are three +possible relationships: + +* **Obsoletes** and its backreference **ObsoletedBy**: when a GIEP is made + obsolete by another GIEP, and has its functionality completely replaced. The + Obsoleted GIEP is moved to the **Declined** state. +* **Extends** and its backreference **ExtendedBy**: when a GIEP has additional + details or implementation added in another GIEP. +* **SeeAlso**: when a GIEP is relevant to another GIEP, but is not affected in + any other defined way. + +Relationships are tracked in the YAML metadata files accompanying each GIEP. + +### GIEP metadata file + +Each GIEP has a YAML file containing metadata alongside it, please keep it up to +date as changes to the GIEP occur. + +In particular, note the `authors`, and `changelog` fields, please keep those up +to date. + +## Process + +### 1. Discuss with the community + +Before creating a GIEP, share your high level idea with the community. There are +several places this may be done: + +- A [new GitHub + Discussion](https://github.com/kubernetes-sigs/gateway-api/discussions/new) +- On our [Slack Channel](https://kubernetes.slack.com/archives/CR0H13KGA) +- On one of our [community + meetings](https://gateway-api.sigs.k8s.io/contributing/?h=meetings#meetings) + +Please default to GitHub discussions: they work a lot like GitHub issues which +makes them easy to search. + +### 2. Create an Issue +[Create a GIEP +issue](https://github.com/kubernetes-sigs/gateway-api/issues/new?assignees=&labels=kind%2Ffeature&template=enhancement.md) +in the repo describing your change. At this point, you should copy the outcome +of any other conversations or documents into this document. + +### 3. Agree on the Goals +Although it can be tempting to start writing out all the details of your +proposal, it's important to first ensure we all agree on the goals. + +For API GIEPs, the first version of your GIEP should aim for a "Provisional" +status and leave out any implementation details, focusing primarily on "Goals" +and "Non-Goals". + +For Memorandum GIEPs, the first version of your GIEP will be the only one, as +Memorandums have only a single stage - `Accepted`. + +### 3. Document Implementation Details +Now that everyone agrees on the goals, it is time to start writing out your +proposed implementation details. These implementation details should be very +thorough, including the proposed API spec, and covering any relevant edge cases. +Note that it may be helpful to use a shared doc for part of this phase to enable +faster iteration on potential designs. + +It is likely that throughout this process, you will discuss a variety of +alternatives. Be sure to document all of these in the GIEP, and why we decided +against them. At this stage, the GIEP should be targeting the "Implementable" +stage. + +### 4. Implement the GIEP as "Experimental" + +With the GIEP marked as "Implementable", it is time to actually make those +proposed changes in our API. In some cases, these changes will be documentation +only, but in most cases, some API changes will also be required. It is important +that every new feature of the API is marked as "Experimental" when it is +introduced. Within the API, we use `` tags to denote +experimental fields. Within Golang packages (conformance tests, CLIs, e.t.c.) we +use the `experimental` Golang build tag to denote experimental functionality. + +Some other requirements must be met before marking a GIEP `Experimental`: + +- the graduation criteria to reach `Standard` MUST be filled out +- a proposed probationary period (see next section) must be included in the GIEP + and approved by maintainers. + +Before changes are released they MUST be documented. GIEPs that have not been +both implemented and documented before a release cut off will be excluded from +the release. + +#### Probationary Period + +Any GIEP in the `Experimental` phase is automatically under a "probationary +period" where it will come up for re-assessment if its graduation criteria are +not met within a given time period. GIEPs that wish to move into `Experimental` +status MUST document a proposed period (6 months is the suggested default) that +MUST be approved by maintainers. Maintainers MAY select an alternative time +duration for a probationary period if deemed appropriate, and will document +their reasoning. + +> **Rationale**: This probationary period exists to avoid GIEPs getting "stale" +> and to provide guidance to implementations about how relevant features should +> be used, given that they are not guaranteed to become supported. + +At the end of a probationary period if the GIEP has not been able to resolve its +graduation criteria it will move to "Rejected" status. In extenuating +circumstances an extension of that period may be accepted by approval from +maintainers. GIEPs which are `Rejected` in this way are removed from the +experimental CRDs and more or less put on hold. GIEPs may be allowed to move +back into `Experimental` status from `Rejected` for another probationary period +if a new strategy for achieving their graduation criteria can be established. +Any such plan to take a GIEP "off the shelf" must be reviewed and accepted by +the maintainers. + +> **Warning**: It is extremely important** that projects which implement +> `Experimental` features clearly document that these features may be removed in +> future releases. + +### 5. Graduate the GIEP to "Standard" + +Once this feature has met the [graduation +criteria](/concepts/versioning/#graduation-criteria), it is time to graduate it +to the "Standard" channel of the API. Depending on the feature, this may include +any of the following: + +1. Graduating the resource to beta +2. Graduating fields to "standard" by removing `` tags +3. Graduating a concept to "standard" by updating documentation + +### 6. Close out the GIEP issue + +The GIEP issue should only be closed once the feature has: +- Moved to the standard channel for distribution (if necessary) +- Moved to a "v1" `apiVersion` for CRDs +- been completely implemented and has wide acceptance (for process changes). + +In short, the GIEP issue should only be closed when the work is "done" (whatever +that means for that GIEP). + +## Format + +GIEPs should match the format of the template found in +[GIEP-696](/GIEPs/GIEP-696). + +## Out of scope + +What is out of scope: see [text from KEP][kep-when-to-use]. Examples: + +* Bug fixes +* Small changes (API validation, documentation, fixups). It is always possible + that the reviewers will determine a "small" change ends up requiring a GIEP. + +## FAQ + +#### Why is it named GIEP? +To avoid potential confusion if people start following the cross references to +the full GEP or KEP process. + +#### Why have a different process than mainline? +Gateway API has some differences with most upstream KEPs. Notably Gateway API +intentionally avoids including any implementation with the project, so this +process is focused entirely on the substance of the API. As this project is +based on CRDs it also has an entirely separately release process, and has +developed concepts like "release channels" that do not exist in upstream. + +#### Is it ok to discuss using shared docs, scratch docs etc? +Yes, this can be a helpful intermediate step when iterating on design details. +It is important that all major feedback, discussions, and alternatives +considered in that step are represented in the GIEP though. A key goal of GIEPs +is to show why we made a decision and which alternatives were considered. If +separate docs are used, it's important that we can still see all relevant +context and decisions in the final GIEP. + +#### When should I mark a GIEP as `Prototyping` as opposed to `Provisional`? +The `Prototyping` status carries the same base meaning as `Provisional` in that +consensus is not complete between stakeholders and we're not ready to move +toward releasing content yet. You should use `Prototyping` to indicate to your +fellow community members that we're in a state of active practical tests and +experiments which are intended to help us learn and iterate on the GIEP. These +can include distributing content, but not under any release channel. + +#### Should I implement support for `Experimental` channel features? +Ultimately one of the main ways to get something into `Standard` is for it to +mature through the `Experimental` phase, so we really _need_ people to implement +these features and provide feedback in order to have progress. That said, the +graduation of a feature past `Experimental` is not a forgone conclusion. Before +implementing an experimental feature, you should: + +* Clearly document that support for the feature is experimental and may + disappear in the future. +* Have a plan in place for how you would handle the removal of this feature from + the API. + +[kep]: https://github.com/kubernetes/enhancements +[kep-when-to-use]: + https://github.com/kubernetes/enhancements/tree/master/keps#do-i-have-to-use-the-kep-process diff --git a/site-src/guides/implementers.md b/site-src/guides/implementers.md new file mode 100644 index 0000000..5d1c626 --- /dev/null +++ b/site-src/guides/implementers.md @@ -0,0 +1,3 @@ +# Implementer's Guide + +TODO \ No newline at end of file diff --git a/site-src/guides/index.md b/site-src/guides/index.md new file mode 100644 index 0000000..92f6412 --- /dev/null +++ b/site-src/guides/index.md @@ -0,0 +1,3 @@ +# Getting started with Gateway API Inference Extension + +TODO \ No newline at end of file diff --git a/site-src/images/logo/logo-text-large-horizontal-white.png b/site-src/images/logo/logo-text-large-horizontal-white.png new file mode 100644 index 0000000000000000000000000000000000000000..dd488044a606e02263e73dbff8b1c77a2134f487 GIT binary patch literal 10531 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 literal 0 HcmV?d00001 diff --git a/site-src/implementations.md b/site-src/implementations.md new file mode 100644 index 0000000..1f56865 --- /dev/null +++ b/site-src/implementations.md @@ -0,0 +1,3 @@ +# Implementations + +TODO \ No newline at end of file diff --git a/site-src/index.md b/site-src/index.md new file mode 100644 index 0000000..ea38ab8 --- /dev/null +++ b/site-src/index.md @@ -0,0 +1,3 @@ +# Introduction + +TODO \ No newline at end of file diff --git a/site-src/overrides/partials/header.html b/site-src/overrides/partials/header.html new file mode 100644 index 0000000..07b787a --- /dev/null +++ b/site-src/overrides/partials/header.html @@ -0,0 +1,117 @@ + + + +{% set class = "md-header" %} +{% if "navigation.tabs.sticky" in features %} + {% set class = class ~ " md-header--shadow md-header--lifted" %} +{% elif "navigation.tabs" not in features %} + {% set class = class ~ " md-header--shadow" %} +{% endif %} + + +
+ + + + {% if "navigation.tabs.sticky" in features %} + {% if "navigation.tabs" in features %} + {% include "partials/tabs.html" %} + {% endif %} + {% endif %} +
diff --git a/site-src/reference/spec.md b/site-src/reference/spec.md new file mode 100644 index 0000000..df95f97 --- /dev/null +++ b/site-src/reference/spec.md @@ -0,0 +1,5 @@ +# API Specification + +This page contains the API field specification for Gateway API. + +REPLACE_WITH_GENERATED_CONTENT diff --git a/site-src/stylesheets/extra.css b/site-src/stylesheets/extra.css new file mode 100644 index 0000000..83df9a8 --- /dev/null +++ b/site-src/stylesheets/extra.css @@ -0,0 +1,43 @@ +/* Hide title in favor of logo */ +.md-header__topic { + display: none; +} + +/* Use Kubernetes color as primary */ +:root { + --md-primary-fg-color: #326ce5; +} + +/* Increase size of logo */ +.md-header__button.md-logo img, .md-header__button.md-logo svg { + height: 1.8rem; +} + +/* Always show tabs, even on smaller screens */ +@media screen and (max-width: 76.234375em) { + .md-header__button.md-logo { + display: block; + } + .md-tabs { + display: block; + } +} + +/* Rounded search box + results */ +.md-search__form { + border-radius: .5rem; +} + +[data-md-toggle=search]:checked~.md-header .md-search__form { + border-radius: .5rem .5rem 0 0; +} +[dir=ltr] .md-search__output { + border-radius: 0 0 .5rem .5rem; +} + +/* Center images */ +img.center { + display: block; + margin: 20px auto; + width: 550px; +}