diff --git a/.gitignore b/.gitignore index d633a1ba..3b1fa7ba 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ go.work.sum *.swp *.swo *~ + +# generated docs +site diff --git a/Makefile b/Makefile index de28e47f..ef32bcea 100644 --- a/Makefile +++ b/Makefile @@ -134,6 +134,23 @@ 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: build-docs-netlify +build-docs-netlify: + pip install -r hack/mkdocs/image/requirements.txt + 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 00000000..87e5bd7b --- /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 00000000..9e7accc0 --- /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 00000000..e7cb9b0c --- /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 00000000..f122d7d4 --- /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/netlify.toml b/netlify.toml new file mode 100644 index 00000000..ff61e3bf --- /dev/null +++ b/netlify.toml @@ -0,0 +1,6 @@ +# netlify configuration +[build] +publish = "site" +command = "make build-docs-netlify" +# available here https://github.com/netlify/build-image/blob/focal/included_software.md#languages +environment = { PYTHON_VERSION = "3.8" } \ No newline at end of file diff --git a/site-src/.mkdocs-exclude b/site-src/.mkdocs-exclude new file mode 100644 index 00000000..9a2dd762 --- /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/api-types/inferencemodel.md b/site-src/api-types/inferencemodel.md new file mode 100644 index 00000000..12a351b0 --- /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 00000000..b1fc339d --- /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 00000000..f7b50d8b --- /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 00000000..f8bd25c0 --- /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 00000000..4a344e1f --- /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 00000000..af7246d9 --- /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 00000000..bc0ceaba --- /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 00000000..968022fa --- /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 00000000..100afe45 --- /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 00000000..4d678da2 --- /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 00000000..56d10183 --- /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 00000000..438a0ffe --- /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 00000000..5d1c6267 --- /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 00000000..92f6412a --- /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 00000000..dd488044 Binary files /dev/null and b/site-src/images/logo/logo-text-large-horizontal-white.png differ diff --git a/site-src/implementations.md b/site-src/implementations.md new file mode 100644 index 00000000..1f568650 --- /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 00000000..ea38ab83 --- /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 00000000..07b787a4 --- /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 00000000..df95f97e --- /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 00000000..83df9a8d --- /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; +}