-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Updates to services docs #3460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updates to services docs #3460
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| --- | ||
| title: "Knative Services" | ||
| linkTitle: "Services" | ||
| weight: 10 | ||
| title: "Knative services" | ||
| weight: 02 | ||
| type: "docs" | ||
| --- | ||
|
|
||
| Knative services are used to deploy an application. Each Knative service is defined by a route and a configuration, which have the same name as the service. The configuration and route are created by the service controller, and their configuration is derived from the configuration of the service. Each time the configuration is updated, a new revision is created. Revisions are immutable snapshots of a particular configuration, and use underlying Kubernetes resources to scale the number of pods based on traffic. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,76 +1,71 @@ | ||
| --- | ||
| title: "Creating Knative services" | ||
| weight: 10 | ||
| linkTitle: "Creating a service" | ||
| weight: 02 | ||
| type: "docs" | ||
| --- | ||
|
|
||
| Knative Services are used to deploy an application. Each Knative Service is defined by a Route and a Configuration, which have the same name as the Service, contained in a YAML file. Every time the Configuration is updated, a new Revision is created. | ||
| To create an application using Knative, you must create a YAML file that defines a Knative service. This YAML file specifies metadata about the application, points to the hosted image of the app and allows the service to be configured. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm going to |
||
|
|
||
| Knative Service Revisions are each backed by a deployment with 2 Kubernetes Services. | ||
| For more information about Kubernetes Services, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/services-networking/service/). | ||
| This guide uses the [Hello World sample app in Go](../samples/hello-world/helloworld-go) to demonstrate the structure of a Service YAML file and the basic workflow for deploying an app. These steps can be adapted for your own application if you have an image of it available on Docker Hub, Google Container Registry, or another container image registry. | ||
|
|
||
| ## Before you begin | ||
|
|
||
| To create a Knative Service, you will need: | ||
| * A Kubernetes cluster with [Knative installed](https://knative.dev/docs/install/index.html). | ||
| * [Custom domains](https://knative.dev/docs/serving/using-a-custom-domain/) set up for Knative Services. | ||
|
|
||
| ## Creating a Knative Service | ||
|
|
||
| To create an application, you need to create a YAML file that defines a Knative Service. | ||
| This YAML file specifies metadata about the application, points to the hosted image of the app and allows the Service to be configured. | ||
|
|
||
| This guide uses the [Hello World sample app in Go](https://knative.dev/docs/serving/samples/hello-world/helloworld-go) to demonstrate the structure of a Service YAML file and the basic workflow for deploying an app. These steps can be adapted for your own application if you have an image of it available on Docker Hub, Google Container Registry, or another container image registry. | ||
|
|
||
| The Hello World sample app does the following: | ||
| The Hello World sample app works as follows: | ||
| 1. Reads an environment variable `TARGET`. | ||
| 2. Prints `Hello ${TARGET}!`. If `TARGET` is not defined, it will use `World` as the `TARGET`. | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| To create a Knative service, you will need: | ||
| * A Kubernetes cluster with [Knative Serving installed](../../install). | ||
| * [Custom domains](../using-a-custom-domain/) set up for Knative services. | ||
|
|
||
| ### Procedure | ||
|
|
||
| 1. Create a new file named `service.yaml` containing the following information. | ||
| ```yaml | ||
| apiVersion: serving.knative.dev/v1 | ||
| kind: Service | ||
| metadata: | ||
| name: helloworld-go | ||
| namespace: default | ||
| spec: | ||
| template: | ||
| 1. Create a new file named `service.yaml` containing the following information: | ||
|
|
||
| ```yaml | ||
| apiVersion: serving.knative.dev/v1 | ||
| kind: Service | ||
| metadata: | ||
| name: helloworld-go | ||
| namespace: default | ||
| spec: | ||
| containers: | ||
| - image: gcr.io/knative-samples/helloworld-go | ||
| env: | ||
| - name: TARGET | ||
| value: "Go Sample v1" | ||
| ``` | ||
| * `apiVersion`: The current Knative version. | ||
| * `name`(metadata): The name of the application. | ||
| * `namespace`: The namespace that the application will use. | ||
| * `image`: The URL to the image of the application. | ||
| * `name`(env): The environment variable printed out by the sample application. | ||
|
|
||
| > Note: If you’re deploying an image of your own app, update the name of the app and the URL of the image accordingly. | ||
| template: | ||
| spec: | ||
| containers: | ||
| - image: gcr.io/knative-samples/helloworld-go | ||
| env: | ||
| - name: TARGET | ||
| value: "Go Sample v1" | ||
| ``` | ||
| * `apiVersion`: The current Knative version. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure why we call out
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. idk either, this was already there before I did the edits so I'd prefer not to block the PR on it since I think this whole bit could do with rewriting / reformatting to fit properly what we're doing now with "callouts" - can you maybe add a follow up issue for this?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If you don't want to rewrite this, I'm happy to have this be the place where we draw the line on updates. |
||
| * `name`(metadata): The name of the application. | ||
| * `namespace`: The namespace that the application will use. | ||
| * `image`: The URL of the image container. | ||
| * `name`(env): The environment variable printed out by the sample application. | ||
|
|
||
| **NOTE:** If you’re deploying an image of your own app, update the name of the app and the URL of the image accordingly. | ||
|
|
||
| 1. From the directory where the new `service.yaml` file was created, deploy the application by applying the `service.yaml` file. | ||
| ``` | ||
| kubectl apply --filename service.yaml | ||
| ``` | ||
|
|
||
| ``` | ||
| kubectl apply -f service.yaml | ||
| ``` | ||
|
|
||
| Now that your app has been deployed, Knative will perform the following steps: | ||
|
|
||
| * Create a new immutable revision for this version of the app. | ||
| * Perform network programming to create a route, ingress, service, and load balancer for your app. | ||
| * Automatically scale your pods up and down based on traffic, including to zero active pods. | ||
|
|
||
| ## Modifying Knative Services | ||
| ## Modifying Knative services | ||
|
|
||
| Any changes to specifications, metadata labels, or metadata annotations for a Service must be copied to the Route and Configuration owned by that Service. The `serving.knative.dev/service` label on the Route and Configuration must also be set to the name of the Service. Any additional labels or annotations on the Route and Configuration not specified above must be removed. | ||
|
|
||
| The Service updates its `status` fields based on the corresponding `status` value for the owned Route and Configuration. | ||
| The Service must include conditions of`RoutesReady` and `ConfigurationsReady` in addition to the generic `Ready` condition. Other conditions can also be present. | ||
|
|
||
| ## What's next? | ||
| ## Next steps | ||
|
|
||
| * For more information about the Knative Service object, see the [Resource Types](https://github.com/knative/serving/blob/main/docs/spec/overview.md#service) documentation. | ||
| * For more information about getting started with deploying a Knative application, see the [Getting Started with App Deployment](https://knative.dev/docs/serving/getting-started-knative-app/) documentation. | ||
| * To get started with deploying a Knative application, see the [Getting Started with App Deployment](../getting-started-knative-app/) documentation. | ||
| * For more information about the Knative Service object, see the [Resource Types](https://github.com/knative/specs/blob/main/specs/serving/overview.md) documentation. | ||
Uh oh!
There was an error while loading. Please reload this page.