From 29776c5293e8292d9ebbcfe7efe1f2c63058a365 Mon Sep 17 00:00:00 2001 From: Richie Escarez Date: Tue, 29 Jan 2019 19:24:44 -0800 Subject: [PATCH] move resources and readme --- README.md | 120 +------------------ _index.html | 129 +++++++++++++++++++++ background.png | Bin 0 -> 20547 bytes docs/README.md | 118 +++++++++++++++++++ docs/_index.md | 10 ++ docs/concepts/_index.md | 7 ++ resources.md => docs/concepts/resources.md | 5 +- search.md | 6 + 8 files changed, 277 insertions(+), 118 deletions(-) create mode 100644 _index.html create mode 100644 background.png create mode 100644 docs/README.md create mode 100755 docs/_index.md create mode 100755 docs/concepts/_index.md rename resources.md => docs/concepts/resources.md (99%) create mode 100644 search.md diff --git a/README.md b/README.md index a3afa005d11..f427133e20a 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,5 @@ -# Welcome to Knative +Welcome to the Knative docs source file repository. -Knative (pronounced kay-nay-tiv) extends Kubernetes to provide a set of -middleware components that are essential to build modern, source-centric, and -container-based applications that can run anywhere: on premises, in the cloud, -or even in a third-party data center. +If you are a contributor [add link to master content here (when site is published)]. -Each of the components under the Knative project attempt to identify common -patterns and codify the best practices that are shared by successful, -real-world, Kubernetes-based frameworks and applications. Knative components -focus on solving mundane but difficult tasks such as: - -- [Deploying a container](./install/getting-started-knative-app.md) -- [Orchestrating source-to-URL workflows on Kubernetes](./serving/samples/source-to-url-go/) -- [Routing and managing traffic with blue/green deployment](./serving/samples/blue-green-deployment.md) -- [Scaling automatically and sizing workloads based on demand](./serving/samples/autoscale-go) -- [Binding running services to eventing ecosystems](./eventing/samples/kubernetes-event-source) - -Developers on Knative can use familiar idioms, languages, and frameworks to -deploy functions, applications, or containers workloads. - -## Components - -The following Knative components are available: - -- [Build](https://github.com/knative/build) - Source-to-container build - orchestration -- [Eventing](https://github.com/knative/eventing) - Management and delivery of - events -- [Serving](https://github.com/knative/serving) - Request-driven compute that - can scale to zero - -## Audience - -Knative is designed for different personas: - -![Diagram that displays different Audiences for Knative](./images/knative-audience.svg) - -### Developers - -Knative components offer developers Kubernetes-native APIs for deploying -serverless-style functions, applications, and containers to an auto-scaling -runtime. - -To join the conversation, head over to the -[Knative users](https://groups.google.com/d/forum/knative-users) Google group. - -### Operators - -Knative components are intended to be integrated into more polished products -that cloud service providers or in-house teams in large enterprises can then -operate. - -Any enterprise or cloud provider can adopt Knative components into their own -systems and pass the benefits along to their customers. - -### Contributors - -With a clear project scope, lightweight governance model, and clean lines of -separation between pluggable components, the Knative project establishes an -efficient contributor workflow. - -Knative is a diverse, open, and inclusive community. To get involved, see -[CONTRIBUTING.md](./community/CONTRIBUTING.md) and join the -[Knative community](./community/README.md). - -Your own path to becoming a Knative contributor can -[begin anywhere](https://github.com/knative/serving/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Akind%2Fgood-first-issue). -[Bug reports](https://github.com/knative/serving/issues/new) and friction logs -from new developers are especially welcome. - -## Documentation - -Follow the links below to learn more about Knative. - -### Getting started - -- [Installing Knative](./install/README.md) -- [Getting started with app deployment](./install/getting-started-knative-app.md) -- [Getting started with serving](./serving) -- [Getting started with builds](./build) -- [Getting started with eventing](./eventing) - -### Configuration and networking - -- [Configuring outbound network access](./serving/outbound-network-access.md) -- [Using a custom domain](./serving/using-a-custom-domain.md) -- [Assigning a static IP address for Knative on Google Kubernetes Engine](./serving/gke-assigning-static-ip-address.md) -- [Configuring HTTPS with a custom certificate](./serving/using-an-ssl-cert.md) - -### Samples and demos - -- [Autoscaling](./serving/samples/autoscale-go/README.md) -- [Source-to-URL deployment](./serving/samples/source-to-url-go/README.md) -- [Binding running services to eventing ecosystems](./eventing/samples/kubernetes-event-source) -- [Telemetry](./serving/samples/telemetry-go/README.md) -- [REST API sample](./serving/samples/rest-api-go/README.md) -- [All samples for serving](./serving/samples/) -- [All samples for eventing](./eventing/samples/) - -### Logging and metrics - -- [Installing logging, metrics and traces](./serving/installing-logging-metrics-traces.md) -- [Accessing logs](./serving/accessing-logs.md) -- [Accessing metrics](./serving/accessing-metrics.md) -- [Accessing traces](./serving/accessing-traces.md) -- [Setting up a logging plugin](./serving/setting-up-a-logging-plugin.md) - -### Debugging - -- [Debugging application issues](./serving/debugging-application-issues.md) -- [Debugging performance issues](./serving/debugging-performance-issues.md) - ---- - -Except as otherwise noted, the content of this page is licensed under the -[Creative Commons Attribution 4.0 License](https://creativecommons.org/licenses/by/4.0/), -and code samples are licensed under the -[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). +To read the docs, see our [Documentation Website](http://knative.dev/docs). diff --git a/_index.html b/_index.html new file mode 100644 index 00000000000..2e5cfc76800 --- /dev/null +++ b/_index.html @@ -0,0 +1,129 @@ ++++ +title = "Knative" + ++++ + +{{< blocks/cover title="Welcome to the Knative Project!" image_anchor="top" height="max" color="dark" >}} +
+ }}"> + Learn More + + + View Repository + +

Kubernetes-based platform to build, deploy, and manage modern serverless workloads.

+
+ {{< blocks/link-down color="info" >}} +
+
+{{< /blocks/cover >}} + + +{{% blocks/lead color="primary" %}} +Knative provides a set of middleware components that are essential to build modern, source-centric, and container-based applications that can run anywhere: on premises, in the cloud, or even in a third-party data center. + +{{% /blocks/lead %}} + + +{{% blocks/section %}} +
+

Essential base primitives for all

+Knative components are built on Kubernetes and codify the best practices shared by successful real-world Kubernetes-based frameworks. It enables developers to focus just on writing interesting code, without worrying about the “boring but difficult” parts of building, deploying, and managing an application. +
+{{% /blocks/section %}} + +{{% blocks/section %}} +
+

+Developer-friendly software

+Knative offers a set of reusable components that focuses on solving many mundane but difficult tasks such as orchestrating source-to-container workflows, routing and managing traffic during deployment, auto-scaling your workloads, or binding running services to eventing ecosystems. Developers can even use familiar idioms, languages, and frameworks to deploy any workload: functions, applications, or containers. +
+{{% /blocks/section %}} + +{{% blocks/section %}} +
+

Supports popular development patterns

+Knative focuses on an idiomatic developer experience. It supports common development patterns such as GitOps, DockerOps, ManualOps, as well as tools and frameworks such as Django, Ruby on Rails, Spring, and many more. +
+{{% /blocks/section %}} + +{{% blocks/section %}} +
+

Best of both worlds: Flexibility and control

+Knative is designed to plug easily into existing build and CI/CD toolchains. By focusing on open-source-first technologies that run anywhere, on any cloud, on any infrastructure supported by Kubernetes, enterprises are free to move their workloads wherever they run best. This offers the flexibility and control customers need to adapt the system to their own unique requirements. +
+{{% /blocks/section %}} + +{{% blocks/section %}} +
+

Operator-friendly

+Knative is designed to be run as a service by all major cloud providers. Google currently works with industry leaders such as Pivotal, SAP, Red Hat, IBM, and many others to create the building blocks that will best suit the needs of developers. Knative powers real-world workloads and is also compatible with other cutting-edge technologies such as Kubernetes and Istio. +
+{{% /blocks/section %}} + + + +{{< blocks/section >}} + +

Knative Features

+ + + + + + + + + + + + + + + + + + + + + + +
Feature NameFeature Description
ServingScale to zero, request-driven compute model
BuildCloud-native source to container orchestration
EventingUniversal subscription, delivery, and management of events
+ +{{< /blocks/section >}} + + +{{< blocks/section color="light" >}} + +{{% blocks/feature icon="fab fa-slack" title="Talk to us on Slack!" url="https://knative.slack.com/" %}} +Interested in learning more, speaking to other contributors, or finding answers? +{{% /blocks/feature %}} + + +{{% blocks/feature icon="fab fa-github" title="Contributions welcome!" url="./contributing/" %}} +Want to join the fun? New users are always welcome! +{{% /blocks/feature %}} + + +{{% blocks/feature icon="fab fa-twitter" title="Follow us on Twitter!" url="https://twitter.com/KnativeProject" %}} +For announcement of latest features etc. +{{% /blocks/feature %}} + + +{{< /blocks/section >}} + + + + diff --git a/background.png b/background.png new file mode 100644 index 0000000000000000000000000000000000000000..9875583a2dfbd309a1c55cf16ab862eed4dde9b8 GIT binary patch literal 20547 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