Update tm cli version and clarify steps
This commit is contained in:
parent
22203e0bab
commit
dede8a0dae
1 changed files with 32 additions and 18 deletions
|
@ -82,7 +82,27 @@ Currently the following [runtimes](https://gitlab.com/triggermesh/runtimes) are
|
||||||
- node.js
|
- node.js
|
||||||
- kaniko
|
- kaniko
|
||||||
|
|
||||||
In order to deploy functions to your Knative instance, the following files must be present:
|
You can find all the files referenced in this doc in the [functions example project](https://gitlab.com/knative-examples/functions).
|
||||||
|
|
||||||
|
Follow these steps to deploy a function using the node.js runtime to your Knative instance:
|
||||||
|
|
||||||
|
1. Create a directory that will house the function. In this example we will create a directory called `echo` at the root of the project.
|
||||||
|
|
||||||
|
1. Create the file that will contain the function code. In this example our file is called `echo.js` and is located inside the `echo` directory.
|
||||||
|
|
||||||
|
If your project is public, skip to step no. 4.
|
||||||
|
|
||||||
|
1. If your project is private you will need to [Create a GitLab deploy token](https://docs.gitlab.com/ee/user/project/deploy_tokens/#creating-a-deploy-token).
|
||||||
|
This will enable the `tm` cli to be used as a deployment step and access the container registry.
|
||||||
|
|
||||||
|
1. Go to the project you want to create the function for.
|
||||||
|
1. Go to **Settings** > **Repository**.
|
||||||
|
1. Click on "Expand" on **Deploy Tokens** section.
|
||||||
|
1. Enter `gitlab-deploy-token` as the name.
|
||||||
|
1. Check the `read_registry` scope
|
||||||
|
1. Click on **Create deploy token**.
|
||||||
|
1. Save the deploy token somewhere safe. Once you leave or refresh
|
||||||
|
the page, **you won't be able to access it again**.
|
||||||
|
|
||||||
1. `.gitlab-ci.yml`: This template allows to define the stage, environment, and
|
1. `.gitlab-ci.yml`: This template allows to define the stage, environment, and
|
||||||
image to be used for your functions. It must be included at the root of your repository:
|
image to be used for your functions. It must be included at the root of your repository:
|
||||||
|
@ -94,10 +114,12 @@ In order to deploy functions to your Knative instance, the following files must
|
||||||
functions:
|
functions:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
environment: test
|
environment: test
|
||||||
image: gcr.io/triggermesh/tm:v0.0.7
|
image: gcr.io/triggermesh/tm:v0.0.9
|
||||||
script:
|
script:
|
||||||
- tm -n "$KUBE_NAMESPACE" set registry-auth gitlab-registry --registry "$CI_REGISTRY" --username "$CI_REGISTRY_USER" --password "$CI_JOB_TOKEN"
|
- tm -n "$KUBE_NAMESPACE" set registry-auth gitlab-registry --registry "$CI_REGISTRY" --username "$CI_REGISTRY_USER" --password "$CI_JOB_TOKEN" --push
|
||||||
- tm -n "$KUBE_NAMESPACE" --registry-host "$CI_REGISTRY_IMAGE" deploy --wait
|
- tm -n "$KUBE_NAMESPACE" set registry-auth gitlab-registry --registry "$CI_REGISTRY" --username "$CI_DEPLOY_USER" --password "$CI_DEPLOY_PASSWORD" --pull
|
||||||
|
- tm -n "$KUBE_NAMESPACE" deploy --wait
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The `gitlab-ci.yml` template creates a `Deploy` stage with a `functions` job that invokes the `tm` CLI with the required parameters.
|
The `gitlab-ci.yml` template creates a `Deploy` stage with a `functions` job that invokes the `tm` CLI with the required parameters.
|
||||||
|
@ -127,7 +149,9 @@ In order to deploy functions to your Knative instance, the following files must
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
The `serverless.yml` file is referencing both an `echo` directory (under `buildargs`) and an `echo` file (under `handler`) which is a reference to `echo.js` in the [repository](https://gitlab.com/knative-examples/functions). Additionally, it contains three sections with distinct parameters:
|
The `serverless.yml` file is referencing both an `echo` directory (under `buildargs`) and an `echo` file (under `handler`)
|
||||||
|
which is a reference to `echo.js` in the [repository](https://gitlab.com/knative-examples/functions). Additionally, it
|
||||||
|
contains three sections with distinct parameters:
|
||||||
|
|
||||||
### `service`
|
### `service`
|
||||||
|
|
||||||
|
@ -149,7 +173,6 @@ The `serverless.yml` file is referencing both an `echo` directory (under `builda
|
||||||
|
|
||||||
In the `serverless.yml` example above, the function name is `echo` and the subsequent lines contain the function attributes.
|
In the `serverless.yml` example above, the function name is `echo` and the subsequent lines contain the function attributes.
|
||||||
|
|
||||||
|
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
|-----------|-------------|
|
|-----------|-------------|
|
||||||
| `handler` | The function's file name. In the example above, both the function name and the handler are the same. |
|
| `handler` | The function's file name. In the example above, both the function name and the handler are the same. |
|
||||||
|
@ -159,8 +182,7 @@ In the `serverless.yml` example above, the function name is `echo` and the subse
|
||||||
| `environment` | Sets an environment variable for the specific function only. |
|
| `environment` | Sets an environment variable for the specific function only. |
|
||||||
|
|
||||||
After the `gitlab-ci.yml` template has been added and the `serverless.yml` file has been
|
After the `gitlab-ci.yml` template has been added and the `serverless.yml` file has been
|
||||||
created, each function must be defined as a single file in your repository. Committing a
|
created, pushing a commit to your project will result in a
|
||||||
function to your project will result in a
|
|
||||||
CI pipeline being executed which will deploy each function as a Knative service.
|
CI pipeline being executed which will deploy each function as a Knative service.
|
||||||
Once the deploy stage has finished, additional details for the function will
|
Once the deploy stage has finished, additional details for the function will
|
||||||
appear under **Operations > Serverless**.
|
appear under **Operations > Serverless**.
|
||||||
|
@ -182,14 +204,6 @@ The sample function can now be triggered from any HTTP client using a simple `PO
|
||||||
|
|
||||||
![function exection](img/function-execution.png)
|
![function exection](img/function-execution.png)
|
||||||
|
|
||||||
Currently, the Serverless page presents all functions available in all clusters registered for the project with Knative installed.
|
|
||||||
|
|
||||||
Clicking on the function name will provide additional details such as the
|
|
||||||
function's URL as well as runtime statistics such as the number of active pods
|
|
||||||
available to service the request based on load.
|
|
||||||
|
|
||||||
![serverless function details](img/serverless-details.png)
|
|
||||||
|
|
||||||
## Deploying Serverless applications
|
## Deploying Serverless applications
|
||||||
|
|
||||||
> Introduced in GitLab 11.5.
|
> Introduced in GitLab 11.5.
|
||||||
|
@ -227,12 +241,12 @@ deploy:
|
||||||
- tm -n "$KUBE_NAMESPACE" --config "$KUBECONFIG" deploy service "$CI_PROJECT_NAME" --from-image "$CI_REGISTRY_IMAGE" --wait
|
- tm -n "$KUBE_NAMESPACE" --config "$KUBECONFIG" deploy service "$CI_PROJECT_NAME" --from-image "$CI_REGISTRY_IMAGE" --wait
|
||||||
```
|
```
|
||||||
|
|
||||||
## Deploy the application with Knative
|
### Deploy the application with Knative
|
||||||
|
|
||||||
With all the pieces in place, the next time a CI pipeline runs, the Knative application will be deployed. Navigate to
|
With all the pieces in place, the next time a CI pipeline runs, the Knative application will be deployed. Navigate to
|
||||||
**CI/CD > Pipelines** and click the most recent pipeline.
|
**CI/CD > Pipelines** and click the most recent pipeline.
|
||||||
|
|
||||||
## Obtain the URL for the Knative deployment
|
### Obtain the URL for the Knative deployment
|
||||||
|
|
||||||
Use the CI/CD deployment job output to obtain the deployment URL. Once all the stages of the pipeline finish, click the **deploy** stage.
|
Use the CI/CD deployment job output to obtain the deployment URL. Once all the stages of the pipeline finish, click the **deploy** stage.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue