From f9550da75fea9f18b55f1fc1faee07325afaaa6c Mon Sep 17 00:00:00 2001 From: Katerina Molchanova <35141662+rokatyy@users.noreply.github.com> Date: Tue, 13 Aug 2024 22:05:43 +0300 Subject: [PATCH] [Docs] Check for broken links (#3316) --- .github/styles/Nuclio/ignore.txt | 1 - .github/workflows/docs-language-linter.yml | 17 ++++++++++ Makefile | 9 ++++++ README.md | 5 +-- README_zh.md | 5 +-- docs/Makefile | 7 +++- .../best-practices-and-common-pitfalls.md | 2 +- docs/concepts/k8s/function-ingress.md | 2 +- docs/conf.py | 32 +++++++++++++++++-- docs/examples/README.md | 2 +- docs/index.md | 2 +- docs/reference/api-gateway/nuctl.md | 4 +-- docs/reference/api-gateway/ui.md | 4 +-- .../code-entry-types.md | 26 +++++++-------- docs/reference/nuctl/nuctl.md | 4 +-- .../dotnetcore/dotnetcore-reference.md | 2 +- .../runtimes/python/python-reference.md | 4 +-- docs/reference/triggers/cron.md | 2 +- docs/reference/triggers/kafka.md | 8 ++--- docs/reference/triggers/mqtt.md | 2 +- docs/requirements.txt | 1 + docs/setup/aks/getting-started-aks.md | 18 +++++------ .../aks/setup-aks-appinsights-grafana.md | 2 +- docs/setup/docker/getting-started-docker.md | 4 +-- docs/setup/gke/getting-started-gke.md | 10 +++--- docs/setup/k8s/getting-started-k8s.md | 4 +-- .../minikube/getting-started-minikube.md | 12 +++---- docs/tasks/configuring-a-platform.md | 2 +- .../tasks/deploy-functions-from-dockerfile.md | 4 +-- docs/tasks/deploying-functions.md | 7 ++-- docs/tasks/quick-start.md | 1 - 31 files changed, 128 insertions(+), 77 deletions(-) diff --git a/.github/styles/Nuclio/ignore.txt b/.github/styles/Nuclio/ignore.txt index af8983ffb8..9d0589e48c 100644 --- a/.github/styles/Nuclio/ignore.txt +++ b/.github/styles/Nuclio/ignore.txt @@ -23,7 +23,6 @@ HTTPie http instantiatable jessie -Katacoda Kerberos Kinesis kube diff --git a/.github/workflows/docs-language-linter.yml b/.github/workflows/docs-language-linter.yml index d727c99aea..b9e1722525 100644 --- a/.github/workflows/docs-language-linter.yml +++ b/.github/workflows/docs-language-linter.yml @@ -18,6 +18,9 @@ on: paths: - "docs/**" - '**.md' + - ".github/workflows/docs-language-linter.yaml" + - ".vale.ini" + - ".github/styles/**" jobs: vale: @@ -29,3 +32,17 @@ jobs: with: reporter: github-pr-check + docs_linkcheck: + name: Check for broken links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + - name: Install dependencies + run: | + pip install -r docs/requirements.txt + - name: Check for broken links + env: + FORCE_COLOR: 1 # Force color output + run: make linkcheck diff --git a/Makefile b/Makefile index 011ef89c33..b3e1ef7bf7 100644 --- a/Makefile +++ b/Makefile @@ -628,6 +628,15 @@ lint: modules ensure-test-files-annotated $(GOPATH)/bin/golangci-lint run -v @echo Done. +.PHONY: lint-docs +lint-docs: + vale docs + @sort .github/styles/Nuclio/ignore.txt -o .github/styles/Nuclio/ignore.txt + +.PHONY: linkcheck +linkcheck: + make -C docs/ linkcheck + .PHONY: ensure-test-files-annotated ensure-test-files-annotated: $(eval test_files_missing_build_annotations=$(strip $(shell find . -type f -name '*_test.go' -exec bash -c "grep -m 1 -L '//go:build ' {} | grep go" \;))) diff --git a/README.md b/README.md index eab62be3ea..a89834aa98 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Translations: Nuclio is a high-performance "serverless" framework focused on data, I/O, and compute intensive workloads. It is well integrated with popular data science tools, such as [Jupyter](https://jupyter.org/) and [Kubeflow](https://www.kubeflow.org/); supports a variety of data and streaming sources; and supports execution over CPUs and GPUs. The Nuclio project began in 2017 and is constantly and rapidly evolving; many start-ups and enterprises are now using Nuclio in production. -You can use Nuclio as a standalone Docker container or on top of an existing [Kubernetes](https://kubernetes.io) cluster; see the deployment instructions in the Nuclio [documentation](https://docs.nuclio.io/en/stable). You can also use Nuclio through a fully managed application service (in the cloud or on-prem) in the [Iguazio Data Science Platform](https://www.iguazio.com/), which you can [try for free](https://go.iguazio.com/start-your-free-trial). +You can use Nuclio as a standalone Docker container or on top of an existing [Kubernetes](https://kubernetes.io) cluster; see the deployment instructions in the Nuclio [documentation](https://docs.nuclio.io/en/stable). You can also use Nuclio through a fully managed application service (in the cloud or on-prem) in the [Iguazio Data Science Platform](https://www.iguazio.com/). If you wish to create and manage Nuclio functions through code - for example, from Jupyter Notebook - see the [Nuclio Jupyter project](https://github.com/nuclio/nuclio-jupyter), which features a Python package and SDK for creating and deploying Nuclio functions from Jupyter Notebook. Nuclio is also an integral part of the new open-source [MLRun](https://github.com/mlrun/mlrun) library for data science automation and tracking and of the open-source [Kubeflow Pipelines](https://www.kubeflow.org/docs/components/pipelines/) framework for building and deploying portable, scalable ML workflows. @@ -76,7 +76,6 @@ For a complete step-by-step guide to using Nuclio over Kubernetes, either with t - [Getting Started with Nuclio on Kubernetes](/docs/setup/k8s/getting-started-k8s.md) - [Getting Started with Nuclio on Google Kubernetes Engine (GKE)](/docs/setup/gke/getting-started-gke.md) - [Getting started with Nuclio on Azure Container Services (AKS)](/docs/setup/aks/getting-started-aks.md) -- [Hands-on live Kubernetes sandbox and guiding instructions for Nuclio, free on Katacoda](https://katacoda.com/javajon/courses/kubernetes-serverless/nuclio) ## How it works @@ -164,8 +163,6 @@ More examples can be found in the **[Examples page](docs/examples/README.md)**. - [Runtime - .NET Core 7.0](/docs/reference/runtimes/dotnetcore/writing-a-dotnetcore-function.md) - [Runtime - Shell](/docs/reference/runtimes/shell/shell-reference.md) - [Examples](docs/examples/README.md) -- Sandbox - - [Install Nuclio and run functions. Explore and experiment on a free Kubernetes cluster.](https://katacoda.com/javajon/courses/kubernetes-serverless/nuclio) - Contributing - [Code conventions](/docs/devel/coding-conventions.md) - [Contributing to Nuclio](/docs/devel/contributing.md) diff --git a/README_zh.md b/README_zh.md index e79a15bf1d..d7a115fe59 100644 --- a/README_zh.md +++ b/README_zh.md @@ -26,7 +26,7 @@ Nuclio 是一个高性能的 "serverless" 框架,专注于数据、I/O和计算密集型的工作负载. 它与流行的数据科学工具集成地很好,例如 [Jupyter](https://jupyter.org/) 和 [Kubeflow](https://www.kubeflow.org/); 支持多种类型的数据和流式数据源; 并且支持在CPU和GPU上执行任务。Nuclio 项目于 2017 年启动,并处于持续不断的快速发展中;现如今,许多初创企业已将 Nuclio 应用于生产。 -你可以将 Nuclio 以一个独立的 Docker 容器运行或者运行在一个已有的 [Kubernetes](https://kubernetes.io) 集群中; 在 Nuclio 文档中查看具体的部署指南。 也可以通过 [Iguazio 数据科学平台](https://www.iguazio.com/) 中的全权托管应用服务平台(云上或者本地)来使用 Nuclio,它提供[免费的试用](https://go.iguazio.com/start-your-free-trial). +你可以将 Nuclio 以一个独立的 Docker 容器运行或者运行在一个已有的 [Kubernetes](https://kubernetes.io) 集群中; 在 Nuclio 文档中查看具体的部署指南。 也可以通过 [Iguazio 数据科学平台](https://www.iguazio.com/) 中的全权托管应用服务平台(云上或者本地)来使用 Nuclio. 如果想通过编码的方式创建或者管理 Nuclio 函数(functions)- 例如, 使用 Jupyter Notebook - 请参阅 [Nuclio Jupyter 项目](https://github.com/nuclio/nuclio-jupyter), 它包含一个完整的 Python 包和软件开发工具包(SDK)用于通过 Jupyter Notebook 创建和部署 Nuclio 函数。 Nuclio 作为新开源项目 [MLRun](https://github.com/mlrun/mlrun) library,以及开源项目 [Kubeflow Pipelines](https://www.kubeflow.org/docs/components/pipelines/) 中不可或缺的部分,分别提供数据科学自动化及追踪能力,以及构建和部署弹性可迁移机器学习(ML)工作流的能力。 @@ -77,7 +77,6 @@ curl -X POST \ - [在 Kubernetes 中使用 Nuclio](/docs/setup/k8s/getting-started-k8s.md) - [在 GKE(Google Kubernetes Engine) 中使用 Nuclio](/docs/setup/gke/getting-started-gke.md) - [在 AKS(Azure Container Services) 中使用 Nuclio](/docs/setup/aks/getting-started-aks.md) -- [在 Katacoda 中使用免费的 Kubernetes 沙箱环境中,按步骤运行 Nuclio](https://katacoda.com/javajon/courses/kubernetes-serverless/nuclio) ## 架构设计 @@ -169,8 +168,6 @@ def handler(context, event): - [运行时 - .NET Core 7.0](/docs/reference/runtimes/dotnetcore/writing-a-dotnetcore-function.md) - [运行时 - Shell](/docs/reference/runtimes/shell/shell-reference.md) - [示例](docs/examples/README.md) -- 沙箱环境 - - [在免费的 Kubernetes 集群中安装 Nuclio 并运行函数,以进行各种探索和试验](https://katacoda.com/javajon/courses/kubernetes-serverless/nuclio) - 贡献指南 - [代码规范](/docs/devel/coding-conventions.md) - [向 Nuclio 做贡献](/docs/devel/contributing.md) diff --git a/docs/Makefile b/docs/Makefile index d4bb2cbb9e..99c5281d8e 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -14,7 +14,12 @@ help: .PHONY: help Makefile +# Link check target: checks for broken links in the documentation. +linkcheck: + make html + @$(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/concepts/best-practices-and-common-pitfalls.md b/docs/concepts/best-practices-and-common-pitfalls.md index ae73229967..ac5dbabaf1 100644 --- a/docs/concepts/best-practices-and-common-pitfalls.md +++ b/docs/concepts/best-practices-and-common-pitfalls.md @@ -47,7 +47,7 @@ Because each Nuclio worker receives its own context across all runtimes, `init_c ## Use HTTP clients over browsers for HTTP(s) tests -When testing functions over HTTP(s), prefer an HTTP client (such as [curl](https://curl.haxx.se/), [HTTPie](https://httpie.org/), or [Postman](https://www.getpostman.com/)) over a browser (such as Google Chrome). +When testing functions over HTTP(s), prefer an HTTP client (such as [curl](https://curl.se/), [HTTPie](https://httpie.org/), or [Postman](https://www.postman.com/)) over a browser (such as Google Chrome). Browsers tend to create requests for **favicon.ico** and other sneaky things before you even press `ENTER`. This might cause confusion while debugging functions, as you can't really control when your function is invoked. diff --git a/docs/concepts/k8s/function-ingress.md b/docs/concepts/k8s/function-ingress.md index ee054b897e..04df9dec99 100644 --- a/docs/concepts/k8s/function-ingress.md +++ b/docs/concepts/k8s/function-ingress.md @@ -21,7 +21,7 @@ However, without an ingress controller running on your cluster, this will have n ## Setting up an ingress controller -In this guide, you'll set up a [Træfik](https://docs.traefik.io/) controller, but any type of Kubernetes ingress controller should work. You can read [Træfik's excellent documentation](https://docs.traefik.io/user-guides/crd-acme/), but for the purposes of this guide you can simply run the following commands to set up the controller by using either of the following alternative methods: +In this guide, you'll set up a [Træfik](https://docs.traefik.io/) controller, but any type of Kubernetes ingress controller should work. You can read [Træfik's excellent documentation](https://doc.traefik.io/traefik/user-guides/crd-acme/), but for the purposes of this guide you can simply run the following commands to set up the controller by using either of the following alternative methods: - Using `kubectl` to apply the resource YAML files. Note that this installs v1.7, and that the YAML files were removed from newer versions: ```sh diff --git a/docs/conf.py b/docs/conf.py index cb146c882a..c9d8ee636f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,6 +28,16 @@ templates_path = ["_templates"] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] +linkcheck_ignore = { + r'https:\/\/github\.com\/.*\/.*#L\d+-L\d+', + # linkcheck doesn't work well with relative paths which contain anchor, so ignore them + r'^.*\.html#.*$', + r'^\./[^/]+\.html#.*$', + r'^\.\./[^/]+\.html#.*$', + +} +linkcheck_anchors = True + language = "go" # https://sphinx-copybutton.readthedocs.io/en/latest/use.html#strip-and-configure-input-prompts-for-code-cells @@ -75,6 +85,13 @@ def setup(app): app.connect('source-read', process_tables) + app.connect('source-read', replace_md_links) + +import re +import markdown +from sphinx.util import logging + +logger = logging.getLogger(__name__) def process_tables(app, docname, source): @@ -87,8 +104,6 @@ def process_tables(app, docname, source): This function is called by sphinx for each document. `source` is a 1-item list. To update the document, replace element 0 in `source`. """ - import markdown - import re md = markdown.Markdown(extensions=['markdown.extensions.tables']) table_processor = markdown.extensions.tables.TableProcessor(md.parser, {}) @@ -104,3 +119,16 @@ def process_tables(app, docname, source): # re-assemble into markdown-with-tables-replaced # must replace element 0 for changes to persist source[0] = ''.join(blocks) + + +def replace_md_links(app, docname, source): + """Replace .md#section links with .html#section links in Markdown files.""" + + # Regex pattern to match Markdown links with .md files and anchors + md_link_pattern = re.compile(r'\[([^]]+)]\(([^)]+)\.md(#.*?)\)') + new_source = md_link_pattern.sub(r'[\1](\2.html\3)', source[0]) + + if source[0] != new_source: + logger.warn(f'Updated markdown links in {docname}') + + source[0] = new_source \ No newline at end of file diff --git a/docs/examples/README.md b/docs/examples/README.md index c4415fde63..8a1df9e6dc 100644 --- a/docs/examples/README.md +++ b/docs/examples/README.md @@ -11,7 +11,7 @@ Note: all function examples have the explicit field `disableDefaultHttpTrigger: - [Image Resize and Convert](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/image) (`image`): A function that demonstrates how to pass a binary-large object (blob) in an HTTP request body and response. The function defines an HTTP request that accepts a binary image or URL as input, converts the input to the target format and size, and returns the converted image in the HTTP response. - [HTTP Ingress](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/ingress) (`ingress`): A simple function with an HTTP ingress configuration (using embedded YAML code) that routes specific URL paths to the function. - [RabbitMQ](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/rabbitmq) (`rabbitmq`): A multi-trigger function with a configuration that connects to RabbitMQ to read messages and write them to local ephemeral storage. If triggered with an HTTP `GET` request, the function returns the messages that it read from RabbitMQ. -- [Azure Event Hub](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/eventhub) (`eventhub`): An Azure Event Hub triggered function with a configuration that connects to an Azure Event Hub. The function reads messages from two partitions, process the messages, invokes another function, and sends the processed payload to another Azure Event Hub. You can find a full demo scenario [here](https://github.com/nuclio/demos/tree/master/fleet-alarm-detection-azure). +- [Azure Event Hub](https://github.com/nuclio/nuclio-templates/tree/master/eventhub) (`eventhub`): An Azure Event Hub triggered function with a configuration that connects to an Azure Event Hub. The function reads messages from two partitions, process the messages, invokes another function, and sends the processed payload to another Azure Event Hub. You can find a full demo scenario [here](https://github.com/nuclio/demos/tree/master/fleet-alarm-detection-azure). - [Call Function](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/callfunction) (`callfunction`): A set of two functions that demonstrates the `CallFunction` feature: - [`fibonacci`](https://github.com/nuclio/nuclio/tree/development/hack/examples/golang/callfunction/fibonacci/fibonacci.go) - For input parameter `n`, returns the `n`-th number in the Fibonacci series (`fib(n)`). diff --git a/docs/index.md b/docs/index.md index 6d8331b949..7ec37e0a0c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,7 +10,7 @@ For support and additional product information, join the active [Nuclio Slack](h Nuclio is a high-performance "serverless" framework focused on data, I/O, and compute intensive workloads. It is well integrated with popular data science tools, such as [Jupyter](https://jupyter.org/) and [Kubeflow](https://www.kubeflow.org/); supports a variety of data and streaming sources; and supports execution over CPUs and GPUs. The Nuclio project began in 2017 and is constantly and rapidly evolving; many start-ups and enterprises are now using Nuclio in production. -You can use Nuclio as a standalone Docker container or on top of an existing [Kubernetes](https://kubernetes.io) cluster; see the deployment instructions in the Nuclio documentation. You can also use Nuclio through a fully managed application service (in the cloud or on-prem) in the [Iguazio Data Science Platform](https://www.iguazio.com/), which you can [try for free](https://go.iguazio.com/start-your-free-trial). +You can use Nuclio as a standalone Docker container or on top of an existing [Kubernetes](https://kubernetes.io) cluster; see the deployment instructions in the Nuclio documentation. You can also use Nuclio through a fully managed application service (in the cloud or on-prem) in the [Iguazio Data Science Platform](https://www.iguazio.com/). If you wish to create and manage Nuclio functions through code - for example, from Jupyter Notebook - see the [Nuclio Jupyter project](https://github.com/nuclio/nuclio-jupyter), which features a Python package and SDK for creating and deploying Nuclio functions from Jupyter Notebook. Nuclio is also an integral part of the new open-source [MLRun](https://github.com/mlrun/mlrun) library for data science automation and tracking and of the open-source [Kubeflow Pipelines](https://www.kubeflow.org/docs/components/pipelines/) framework for building and deploying portable, scalable ML workflows. diff --git a/docs/reference/api-gateway/nuctl.md b/docs/reference/api-gateway/nuctl.md index 511d80cb6f..56680ec92f 100644 --- a/docs/reference/api-gateway/nuctl.md +++ b/docs/reference/api-gateway/nuctl.md @@ -20,7 +20,7 @@ $ nuctl create apigateway \ --namespace ``` -For invoking the function using the api gateway, see [invoking API Gateways](./http.html#invoke-api-gateways). +For invoking the function using the api gateway, see [invoking API Gateways](./http.md#invoke-api-gateways). ## Basic authentication @@ -39,7 +39,7 @@ $ nuctl create apigateway \ --namespace ``` -To invoke the function using the API gateway, see [invoking API Gateways with basic authentication](./http.html#invoke-api-gateways-with-basic-authentication). +To invoke the function using the API gateway, see [invoking API Gateways with basic authentication](./http.md#invoke-api-gateways-with-basic-authentication). ## Delete an API Gateway diff --git a/docs/reference/api-gateway/ui.md b/docs/reference/api-gateway/ui.md index 764bd8471a..4c720b40d3 100644 --- a/docs/reference/api-gateway/ui.md +++ b/docs/reference/api-gateway/ui.md @@ -24,11 +24,11 @@ There, you can create an API Gateway with the following parameters: ![api-gateway](../../../docs/assets/images/api-gateway-ui-none.png) -To invoke the function using the api gateway, see [invoking API Gateways](./http.html#invoke-api-gateways). +To invoke the function using the api gateway, see [invoking API Gateways](./http.md#invoke-api-gateways). ### With Basic Authentication ![api-gateway-basic-auth](../../../docs/assets/images/api-gateway-ui-basic-auth.png) -To invoke the function using the api gateway, see [invoking API Gateways with basic authentication](./http.html#invoke-api-gateways-with-basic-authentication). \ No newline at end of file +To invoke the function using the api gateway, see [invoking API Gateways with basic authentication](./http.md#invoke-api-gateways-with-basic-authentication). \ No newline at end of file diff --git a/docs/reference/function-configuration/code-entry-types.md b/docs/reference/function-configuration/code-entry-types.md index 57dc591f2a..306351fbd5 100644 --- a/docs/reference/function-configuration/code-entry-types.md +++ b/docs/reference/function-configuration/code-entry-types.md @@ -20,7 +20,7 @@ This document describes the Nuclio function code-entry types and related configu ## Overview -As part of the [function specification](../../reference/function-configuration/function-configuration-reference.html#specification) (`spec`), you must configure one of the following code-entry types and related information that points either to a pre-built function image or to code from which to build such an image: +As part of the [function specification](function-configuration-reference.md#specification) (`spec`), you must configure one of the following code-entry types and related information that points either to a pre-built function image or to code from which to build such an image: - Function image (`image`) — set the `spec.image` configuration field to the name of a function container image. See [Function-image code-entry type (`image`)](#code-entry-type-image). @@ -38,15 +38,15 @@ As part of the [function specification](../../reference/function-configuration/f The code-entry type is determined by using the following processing logic: -1. If [`spec.image`](../../reference/function-configuration/function-configuration-reference.html#spec.image) is set, the implied code-entry type is [function image](#code-entry-type-image) (`image`) and the configured function image is used. The `spec.build.codeEntryType`, `spec.build.functionSourceCode`, and `spec.build.path` fields are ignored. +1. If [`spec.image`](function-configuration-reference.md#spec.image) is set, the implied code-entry type is [function image](#code-entry-type-image) (`image`) and the configured function image is used. The `spec.build.codeEntryType`, `spec.build.functionSourceCode`, and `spec.build.path` fields are ignored. > **Note:** When you build and deploy a Nuclio function, the `spec.image` field is automatically updated to the name of the function's container image, so to use a different code-entry type for a redeployed function you must first reset the `spec.image` configuration field. This is handled implicitly when deploying a function from the Nuclio dashboard. -2. If [`spec.build.functionSourceCode`](../../reference/function-configuration/function-configuration-reference.html#spec.build.functionSourceCode) is set (and `spec.image` isn't set), the implied code-entry type is [encoded source-code string](#code-entry-type-sourcecode) (`sourceCode`) and the function is built from the configured source code. The `spec.build.codeEntryType` and `spec.build.path` fields are ignored. +2. If [`spec.build.functionSourceCode`](function-configuration-reference.md#spec.build.functionSourceCode) is set (and `spec.image` isn't set), the implied code-entry type is [encoded source-code string](#code-entry-type-sourcecode) (`sourceCode`) and the function is built from the configured source code. The `spec.build.codeEntryType` and `spec.build.path` fields are ignored. -3. If [`spec.build.codeEntryType`](../../reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) is set (and `spec.image` and `spec.build.functionSourceCode` aren't set), the value of the code-entry field determines the [external function-code code-entry type](#external-func-code-entry-types) (`archive`, `github`, or `s3`). +3. If [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) is set (and `spec.image` and `spec.build.functionSourceCode` aren't set), the value of the code-entry field determines the [external function-code code-entry type](#external-func-code-entry-types) (`archive`, `github`, or `s3`). -4. If [`spec.build.path`](../../reference/function-configuration/function-configuration-reference.md#spec.build.path) is set (and `spec.image`, `spec.build.functionSourceCode`, and `spec.build.codeEntryType` aren't set), the implied code-entry type is [source-code-file](#code-entry-type-codefile) and the function is built from the configured source code. +4. If [`spec.build.path`](function-configuration-reference.md#spec.build.path) is set (and `spec.image`, `spec.build.functionSourceCode`, and `spec.build.codeEntryType` aren't set), the implied code-entry type is [source-code-file](#code-entry-type-codefile) and the function is built from the configured source code. ### Configuring the code-entry type from the dashboard @@ -59,7 +59,7 @@ The dashboard notes in this reference refer to fields in the **Code** function d ## Function-image code-entry type (`image`) -Set the [`spec.image`](../../reference/function-configuration/function-configuration-reference.md#spec.image) function-configuration field to the name of a function container image (`[.].[:]`) to deploy the function from this image. +Set the [`spec.image`](function-configuration-reference.md#spec.image) function-configuration field to the name of a function container image (`[.].[:]`) to deploy the function from this image. > **Note:** When `spec.image` is set, the implied code-entry type is `image` and `spec.build.codeEntryType` and `spec.build.path` are ignored. See [Determining the code-entry type](#code-entry-type-determine). @@ -85,7 +85,7 @@ Use either of the following methods to provide the function source code: ### Encoded source-code string code-entry type (`sourceCode`) -Set the [`spec.build.functionSourceCode`](../../reference/function-configuration/function-configuration-reference.md#spec.build.functionSourceCode) function-configuration field to the function's source code, encoded as a Base64-encoded string, to build the function image from this code. +Set the [`spec.build.functionSourceCode`](./function-configuration-reference.md#spec.build.functionSourceCode) function-configuration field to the function's source code, encoded as a Base64-encoded string, to build the function image from this code. > **Note:** When `spec.build.functionSourceCode` is set and `spec.image` isn't set, the implied code-entry type is `sourceCode` and `spec.build.codeEntryType` and `spec.build.path` are ignored. When `spec.image` is set, `spec.build.functionSourceCode` is ignored. See [Determining the code-entry type](#code-entry-type-determine). @@ -128,7 +128,7 @@ spec: ## External function-code entry types -Set the [`spec.build.codeEntryType`](/docs/reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to one of the following code-entry types to download the function code from the respective external source: +Set the [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to one of the following code-entry types to download the function code from the respective external source: - `github` — download the code from a GitHub repository. See [GitHub code-entry type (`github`)](#code-entry-type-github). - `archive` — download the code as an archive file from an Iguazio Data Science Platform data container (authenticated) or from any URL that doesn't require download authentication. See [Archive-file code-entry type (`archive`)](#code-entry-type-archive). @@ -152,7 +152,7 @@ The downloaded function code can optionally contain a **function.yaml** file wit ### Git code-entry type (`git`) -Set the [`spec.build.codeEntryType`](../../reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `git` (dashboard: **Code entry type** = `Git`) to clone the function code from a Git repository. The following configuration fields provide additional information for performing the cloning: +Set the [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `git` (dashboard: **Code entry type** = `Git`) to clone the function code from a Git repository. The following configuration fields provide additional information for performing the cloning: - `spec.build` — - `path` (dashboard: **URL**) (Required) — the URL of the Git repository that contains the function code. @@ -221,7 +221,7 @@ spec: ### GitHub code-entry type (`github`) -Set the [`spec.build.codeEntryType`](../../reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `github` (dashboard: **Code entry type** = `GitHub`) to download the function code from a GitHub repository. The following configuration fields provide additional information for performing the download: +Set the [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `github` (dashboard: **Code entry type** = `GitHub`) to download the function code from a GitHub repository. The following configuration fields provide additional information for performing the download: - `spec.build` — - `path` (dashboard: **URL**) (Required) — the URL of the GitHub repository that contains the function code. @@ -252,7 +252,7 @@ spec: ### Archive-file code-entry type (`archive`) -Set the [`spec.build.codeEntryType`](../../reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `archive` (dashboard: **Code entry type** = `Archive`) to download [an archive file](#archive-file-formats) of the function code from one of the following sources: +Set the [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `archive` (dashboard: **Code entry type** = `Archive`) to download [an archive file](#archive-file-formats) of the function code from one of the following sources: - An [Iguazio Data Science Platform](https://www.iguazio.com) ("platform") data container. Downloads from this source require user authentication. - Any URL that doesn't require user authentication to perform the download. @@ -287,7 +287,7 @@ spec: ### AWS S3 code-entry type (`s3`) -Set the [`spec.build.codeEntryType`](../../reference/function-configuration/function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `s3` (dashboard: **Code entry type** = `S3`) to download [an archive file](#archive-file-formats) of the function code from an Amazon Simple Storage Service (AWS S3) bucket. The following configuration fields provide additional information for performing the download: +Set the [`spec.build.codeEntryType`](function-configuration-reference.md#spec.build.codeEntryType) function-configuration field to `s3` (dashboard: **Code entry type** = `S3`) to download [an archive file](#archive-file-formats) of the function code from an Amazon Simple Storage Service (AWS S3) bucket. The following configuration fields provide additional information for performing the download: - `spec.build.codeEntryAttributes` — - `s3Bucket` (dashboard: **Bucket**) (Required) — the name of the S3 bucket that contains the archive file. @@ -321,4 +321,4 @@ spec: ## See also -- [Function-Configuration Reference](../../reference/function-configuration/function-configuration-reference.md) +- [Function-Configuration Reference](function-configuration-reference.md) diff --git a/docs/reference/nuctl/nuctl.md b/docs/reference/nuctl/nuctl.md index cd41573fd7..33d160c56a 100644 --- a/docs/reference/nuctl/nuctl.md +++ b/docs/reference/nuctl/nuctl.md @@ -59,7 +59,7 @@ To force `nuctl` to run against a Kubernetes instance of Nuclio, add `--platform When running on Kubernetes, `nuctl` requires a running registry on your Kubernetes cluster and access to a kubeconfig file. -For an example of function deployment using `nuctl` against a Kubernetes cluster, see the Nuclio [Kubernetes getting-started guide](../../setup/k8s/getting-started-k8s.html#deploy-a-function-with-the-nuclio-cli). +For an example of function deployment using `nuctl` against a Kubernetes cluster, see the Nuclio [Kubernetes getting-started guide](../../setup/k8s/getting-started-k8s.md#deploy-a-function-with-the-nuclio-cli). #### Invoking a function using nuctl on Kubernetes @@ -68,7 +68,7 @@ While in most cases using `nuctl` on the [Local Docker](#docker) platform enable by default for some configurations. This means, for example, that `nuctl invoke` command will not be able to work unless your function is explicitly exposed or reachable from wherever you run `nuctl invoke`. -See [exposing a function](../../tasks/deploying-functions.html#exposing-a-function) for more details. +See [exposing a function](../../tasks/deploying-functions.md#exposing-a-function) for more details. For your convenience, when deploying a function using `nuctl`, exposing it via a `NodePort` can be easily done by using the CLI arguments `--http-trigger-service-type=nodePort`. diff --git a/docs/reference/runtimes/dotnetcore/dotnetcore-reference.md b/docs/reference/runtimes/dotnetcore/dotnetcore-reference.md index 42b3be06d6..d5dd9d111e 100644 --- a/docs/reference/runtimes/dotnetcore/dotnetcore-reference.md +++ b/docs/reference/runtimes/dotnetcore/dotnetcore-reference.md @@ -56,7 +56,7 @@ JsonConvert.SerializeObject(...); ``` Adding more dependencies is made easy using `dotnet add package `. -For more details about `dotnet add package`, see the [Microsoft documentation](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-add-package). +For more details about `dotnet add package`, see the [Microsoft documentation](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-add-package). ## Dockerfile diff --git a/docs/reference/runtimes/python/python-reference.md b/docs/reference/runtimes/python/python-reference.md index 211b4f321c..ac0f7a1dc7 100644 --- a/docs/reference/runtimes/python/python-reference.md +++ b/docs/reference/runtimes/python/python-reference.md @@ -27,7 +27,7 @@ For asynchronous support (e.g.: `asyncio`), you may want to decorate your functi Important to note: - Nuclio, at the moment, does not support concurrent requests handling for a single working. Each working may handle - one request at a time, for more information see [here](../../../concepts/architecture.html#runtime-engine). + one request at a time, for more information see [here](../../../concepts/architecture.md#runtime-engine). - However, using an async handler can still be beneficial in some scenarios; Since the event loop would keep running while listening on more incoming requests, it allows functions to asynchronously perform I/O bound background tasks. @@ -224,6 +224,6 @@ context.platform.set_drain_termination(callback) # where 'callback' is a user-d Termination callback is triggered by the processor when it is about to exit. The termination callback facilitates a graceful shutdown. -Additionally, we offer a [drain callback](../../triggers/kafka.html#drain-callback) option for stream triggers. +Additionally, we offer a [drain callback](../../triggers/kafka.md#drain-callback) option for stream triggers. diff --git a/docs/reference/triggers/cron.md b/docs/reference/triggers/cron.md index c0c3c313e4..c35772268d 100644 --- a/docs/reference/triggers/cron.md +++ b/docs/reference/triggers/cron.md @@ -27,7 +27,7 @@ Triggers the function according to a schedule or interval, with an optional body > 1. You must set either the [`schedule`](#attr-schedule) or [`interval`](#attr-interval) mutually-exclusive attributes. > 2. The `event.*` attributes are optional. > 3. **[Tech Preview]** On Kubernetes platforms, you can set the `cronTriggerCreationMode` platform-configuration field to `"kube"` to run the triggers as Kubernetes CronJobs instead of the default implementation of running Cron triggers from the Nuclio processor. -> For more information, see [Configuring a Platform](../../tasks/configuring-a-platform.html#cron-trigger-creation-mode-crontriggercreationmode). +> For more information, see [Configuring a Platform](../../tasks/configuring-a-platform.md#cron-trigger-creation-mode-crontriggercreationmode). > When running Cron triggers as CronJobs — > - The created CronJob uses `wget` to call the default HTTP trigger of the function according to the configured interval or schedule. > (This means that worker-related attributes are irrelevant.) diff --git a/docs/reference/triggers/kafka.md b/docs/reference/triggers/kafka.md index b527ebd8fc..c7e83a3c82 100644 --- a/docs/reference/triggers/kafka.md +++ b/docs/reference/triggers/kafka.md @@ -109,7 +109,7 @@ For more information on Nuclio function configuration, see the [function-configu - **`handshake`** (`bool`) - Whether to send Kafka SASL handshake first. (default to: `true`) - **`user`** (`string`) - Username to be used for authentication. - **`password`** (`string`) - Password to be used for authentication. - - **`mechanism`** (`string`) - Name of SASL mechanism to use for authentication. (default to: `plain`, see [here](https://github.com/Shopify/sarama/blob/f16c9d8fbe4866c970b20a08be14d57553b0b660/broker.go#L62) for options) + - **`mechanism`** (`string`) - Name of SASL mechanism to use for authentication. (default to: `plain`, see [here](https://pkg.go.dev/github.com/Shopify/sarama#SASLMechanism) for options) > `GSSAPI` is yet to be supported by Nuclio. (read: Kerberos) - **`sasl.oauth`** - SASL OAuth configuration object. @@ -186,7 +186,7 @@ The current configurations supported via secrets are: `accessKey`, `accessCertif ## How a message travels through Nuclio to the handler -Nuclio leverages the [Sarama](https://pkg.go.dev/github.com/Shopify/sarama?tab=doc) Go client library (`sarama`) to read from Kafka. This library takes care of reading messages from Kafka partitions and distributing them to a consumer - in this case, the Nuclio trigger. A Nuclio replica has exactly one instance of Sarama and one instance of the Nuclio trigger for each Kafka trigger configured for the Nuclio function. +Nuclio leverages the [Sarama](https://pkg.go.dev/github.com/Shopify/sarama) Go client library (`sarama`) to read from Kafka. This library takes care of reading messages from Kafka partitions and distributing them to a consumer - in this case, the Nuclio trigger. A Nuclio replica has exactly one instance of Sarama and one instance of the Nuclio trigger for each Kafka trigger configured for the Nuclio function. Upon its creation, the Nuclio trigger configures Sarama to start reading messages from a given broker, topics, or consumer group. At this point, Sarama calculates which partitions the Nuclio replica must handle, communicates the results to the Nuclio trigger, and then starts dispatching messages. @@ -202,7 +202,7 @@ The Nuclio trigger reads directly from this partition consumer queue (remember t ### Configuration parameters - @@ -342,7 +342,7 @@ This aggressive termination helps the consumer groups stabilize in a determinist ### Configuration parameters - diff --git a/docs/reference/triggers/mqtt.md b/docs/reference/triggers/mqtt.md index 712b3734d1..d89287bf31 100644 --- a/docs/reference/triggers/mqtt.md +++ b/docs/reference/triggers/mqtt.md @@ -1,6 +1,6 @@ # MQTT trigger -Reads messages from [MQTT](http://mqtt.org/) topics. +Reads messages from [MQTT](https://mqtt.org/) topics. ## Attributes diff --git a/docs/requirements.txt b/docs/requirements.txt index 35b129a6f5..3035f61958 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,3 +3,4 @@ recommonmark python_docs_theme sphinx_book_theme sphinx-copybutton +sphinx diff --git a/docs/setup/aks/getting-started-aks.md b/docs/setup/aks/getting-started-aks.md index 559f651436..bd47b23bcd 100644 --- a/docs/setup/aks/getting-started-aks.md +++ b/docs/setup/aks/getting-started-aks.md @@ -19,13 +19,13 @@ Follow this step-by-step guide to set up a Nuclio development environment that u Before starting the set-up procedure, ensure that the following prerequisites are met: -- You have an Azure account. If you don't have an account, you can [create one for free](https://azure.microsoft.com/free/). +- You have an Azure account. If you don't have an account, you can [create one for free](https://azure.microsoft.com/en-us/free/). - The [Azure CLI](https://docs.microsoft.com/cli/azure/) (`az`) is installed on your installation machine. See the [Azure CLI installation guide](https://docs.microsoft.com/cli/azure/install-azure-cli). ## Set up your AKS cluster -1. **Create a resource group** by running the following `az` command (see the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/group#az_group_create)): +1. **Create a resource group** by running the following `az` command (see the [Azure CLI documentation](https://learn.microsoft.com/en-us/cli/azure/group?view=azure-cli-latest#az-group-create)): ```sh az group create --name --location @@ -36,7 +36,7 @@ Before starting the set-up procedure, ensure that the following prerequisites ar az group create --name my-nuclio-k8s-rg --location westeurope ``` -2. **Create a Kubernetes cluster** by running the following `az` command (see the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/aks#az_aks_create)): +2. **Create a Kubernetes cluster** by running the following `az` command (see the [Azure CLI documentation](https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create)): ```sh az aks create --resource-group --name --node-count @@ -51,14 +51,14 @@ Before starting the set-up procedure, ensure that the following prerequisites ar 3. **Install the kubectl CLI**. If the CLI is already installed, you can skip to the [next step](#connect-aks-cluster-to-kubectl). - The [`kubectl`](https://kubernetes.io/docs/user-guide/kubectl-overview/) Kubernetes command-line application enables you to connect to the Kubernetes cluster from your client computer. - To install `kubectl` locally, run the following `az` command (see the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/aks#az_aks_install_cli)): + The [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) Kubernetes command-line application enables you to connect to the Kubernetes cluster from your client computer. + To install `kubectl` locally, run the following `az` command (see the [Azure CLI documentation](https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-install-cli)): ```sh az aks install-cli ``` -4. **Connect to the cluster with kubectl** by running the following `az` command, which configures the `kubectl` CLI to connect to your Kubernetes cluster (see the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/aks#az_aks_get_credentials)): +4. **Connect to the cluster with kubectl** by running the following `az` command, which configures the `kubectl` CLI to connect to your Kubernetes cluster (see the [Azure CLI documentation](https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-get-credentials)): ```sh az aks get-credentials --resource-group= --name= @@ -88,7 +88,7 @@ For more information, see the [ACR documentation](https://docs.microsoft.com/azu Microsoft's [Create a container registry using the Azure CLI](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) guide explains how to use the `az` CLI to create a container registry. The Nuclio dashboard builds and pushes functions to a Docker registry. For the Nuclio ACR setup, ACR serves as the Docker registry. -Create an ACR instance by using the `az acr create` command (see the [Azure CLI documentation](https://docs.microsoft.com/cli/azure/acr#az_acr_create)): +Create an ACR instance by using the `az acr create` command (see the [Azure CLI documentation](https://learn.microsoft.com/en-us/cli/azure/acr?view=azure-cli-latest#az-acr-create)): > **Note:** The name of the registry (``) must be unique. ```sh az acr create --resource-group --name --sku Basic @@ -156,5 +156,5 @@ See the following resources to make the best of your new Nuclio environment: - [Deploying Functions](../../tasks/deploying-functions.md) - [Invoking Functions by Name with a Kubernetes Ingress](../../concepts/k8s/function-ingress.md) - [More function examples](../../examples/README.md) -- [References](../../reference/index.html) -- [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) +- [References](../../reference/index) +- [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) \ No newline at end of file diff --git a/docs/setup/aks/setup-aks-appinsights-grafana.md b/docs/setup/aks/setup-aks-appinsights-grafana.md index 708e249557..845416217b 100644 --- a/docs/setup/aks/setup-aks-appinsights-grafana.md +++ b/docs/setup/aks/setup-aks-appinsights-grafana.md @@ -193,7 +193,7 @@ Now, browse to http://127.0.0.1:3000/ and log in using the admin username and pa Verify that `Azure Monitor` exists in the plugins page. -Configure a data source using the [plugin support page](https://github.com/grafana/azure-monitor-datasource#configure-the-data-source). +Configure a data source using the [plugin support page](https://github.com/grafana/azure-monitor-datasource?tab=readme-ov-file#configure-the-data-source. You can import a [sample Grafana JSON file](https://raw.githubusercontent.com/nuclio/nuclio/development/docs/assets/grafana-sample-dashboard.json) from the Grafana dashboard: from the menu (plus icon - `+`) select **Create > Import** and upload the sample JSON file. diff --git a/docs/setup/docker/getting-started-docker.md b/docs/setup/docker/getting-started-docker.md index 3ccf2c9db2..f3c2cc9418 100644 --- a/docs/setup/docker/getting-started-docker.md +++ b/docs/setup/docker/getting-started-docker.md @@ -12,7 +12,7 @@ Follow this step-by-step guide to set up a Nuclio development environment that u Before starting the set-up procedure, ensure that the following prerequisites are met: -- Your environment has a running [Docker](https://docker.com) daemon. +- Your environment has a running [Docker](https://www.docker.com/) daemon. To ensure that your Docker daemon is running properly, run the following command with the same user that will be used to execute Nuclio CLI commands: ```sh docker version @@ -42,5 +42,5 @@ See the following resources to make the best of your new Nuclio environment: - [Deploying Functions](../../tasks/deploying-functions.md) - [More function examples](../../examples/README.md) -- [References](../../reference/index.html) +- [References](../../reference/index) - [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) diff --git a/docs/setup/gke/getting-started-gke.md b/docs/setup/gke/getting-started-gke.md index abc68d7e42..fde930ac66 100644 --- a/docs/setup/gke/getting-started-gke.md +++ b/docs/setup/gke/getting-started-gke.md @@ -77,11 +77,11 @@ gcloud iam service-accounts keys create credentials.json --iam-account $(gcloud ## Install Nuclio -At this stage you should have a functioning Kubernetes cluster, credentials to a private Docker registry, and a working Kubernetes CLI (`kubectl`), and you can proceed to install the Nuclio services on the cluster (i.e., deploy Nuclio). For more information about `kubectl`, see the [Kubernetes documentation](https://kubernetes.io/docs/user-guide/kubectl-overview/). +At this stage you should have a functioning Kubernetes cluster, credentials to a private Docker registry, and a working Kubernetes CLI (`kubectl`), and you can proceed to install the Nuclio services on the cluster (i.e., deploy Nuclio). For more information about `kubectl`, see the [Kubernetes documentation](https://kubernetes.io/docs/reference/kubectl/). **Create a Kubernetes Docker-registry secret** from service-key file that you created as part of the [Kubernetes cluster setup](#set-up-a-kubernetes-cluster-and-a-local-environment) -And then follow the instructions of [How to run nuclio in Production](../../setup/k8s/running-in-production-k8s.html#the-preferred-deployment-method) +And then follow the instructions of [How to run nuclio in Production](../../setup/k8s/running-in-production-k8s.md#the-preferred-deployment-method) > NOTE: use the below docker registry secret creation command: @@ -103,7 +103,7 @@ Use the command `kubectl --namespace nuclio get pods` to verify both the control See the following resources to make the best of your new Nuclio environment: - [Deploying Functions](../../tasks/deploying-functions.md) -- [Invoking Functions by Name with a Kubernetes Ingress](../../concepts/k8s/function-ingress.md) +- [Invoking Functions by Name with a Kubernetes Ingress](../../concepts/k8s/function-ingress) - [More function examples](../../examples/README.md) -- [References](../../reference/index.html) -- [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) +- [References](../../reference/index) +- [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls) diff --git a/docs/setup/k8s/getting-started-k8s.md b/docs/setup/k8s/getting-started-k8s.md index b6b16f2a85..8850285ae1 100644 --- a/docs/setup/k8s/getting-started-k8s.md +++ b/docs/setup/k8s/getting-started-k8s.md @@ -21,7 +21,7 @@ Before starting the set-up procedure, ensure that the following prerequisites ar ## Install Nuclio -At this stage you should have a functioning Kubernetes cluster, credentials to a private Docker registry, and a working Kubernetes CLI (`kubectl`), and you can proceed to install the Nuclio services on the cluster (i.e., deploy Nuclio). For more information about `kubectl`, see the [Kubernetes documentation](https://kubernetes.io/docs/user-guide/kubectl-overview/). +At this stage you should have a functioning Kubernetes cluster, credentials to a private Docker registry, and a working Kubernetes CLI (`kubectl`), and you can proceed to install the Nuclio services on the cluster (i.e., deploy Nuclio). For more information about `kubectl`, see the [Kubernetes documentation](https://kubernetes.io/docs/reference/kubectl/). Follow the instructions of [How to run nuclio in Production](running-in-production-k8s.md) @@ -35,5 +35,5 @@ See the following resources to make the best of your new Nuclio environment: - [Deploying Functions](../../tasks/deploying-functions.md) - [Invoking Functions by Name with a Kubernetes Ingress](../../concepts/k8s/function-ingress.md) - [More function examples](../../examples/README.md) -- [References](../../reference/index.html) +- [References](../../reference/index) - [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) diff --git a/docs/setup/minikube/getting-started-minikube.md b/docs/setup/minikube/getting-started-minikube.md index f6cfae08ba..af6e4baa21 100644 --- a/docs/setup/minikube/getting-started-minikube.md +++ b/docs/setup/minikube/getting-started-minikube.md @@ -16,7 +16,7 @@ Before starting the set-up procedure, ensure that the following prerequisites ar - The following components are installed on your installation machine: - [Docker](https://docs.docker.com/get-docker/) - - [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) + - [Minikube](https://minikube.sigs.k8s.io/docs/start/) - [Helm](https://helm.sh/docs/intro/install/) - The [Nuclio CLI](../../reference/nuctl/nuctl.md) (`nuctl`) is installed — if you wish to [use the CLI to deploy Nuclio functions](#deploy-a-function-with-the-nuclio-cli-nuctl). To install the CLI, simply [download](https://github.com/nuclio/nuclio/releases) the appropriate CLI version to your installation machine. @@ -39,7 +39,7 @@ minikube start --kubernetes-version v1.27.5 --driver docker --extra-config=apise > - Change the Kubernetes version. Currently, the recommended version is 1.27.5. > - Change the minikube driver according to your environment and needs > - Add `--addons ingress` to your `minikube start` command to support creating function ingresses to flexibly -> [expose your function](/docs/tasks/deploying-functions.html#exposing-a-function). +> [expose your function](../../tasks/deploying-functions.md#exposing-a-function). > Ensure that your function ingress appears on your hosts file (**/etc/hosts**). > You can do this by running this command: > ```sh @@ -63,7 +63,7 @@ Before Docker container images can be pushed to your newly created, insecure reg address (`$(minikube ip):5000`) to the list of insecure registries to instruct Docker to accept working against it: - **Docker for macOS** - you can add it under **Preferences | Daemon**. -- **Linux** - follow the instructions in the [Docker documentation](https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry). +- **Linux** - follow the instructions in the [Docker documentation](https://docs.docker.com/registry). ## Install Nuclio @@ -105,13 +105,13 @@ nuctl deploy helloworld \ --run-registry localhost:5000 ``` >**Note:** The command above exposes the function externally using a `nodePort`. This is done for demonstration -> purposes only. Please read more about [exposing your function](../../tasks/deploying-functions.html#exposing-a-function) +> purposes only. Please read more about [exposing your function](../../tasks/deploying-functions.md#exposing-a-function) > for more information. >**Note:** The difference between the two registries specified in this command, and the reason for their addresses being different is as follows: > > - The `--registry` option defines the Docker registry onto which the function images that you build will be pushed. This is the registry that you previously brought up on your Minikube VM. -> - The `--registry-run` option defines the registry from which the [`kubelet`](https://kubernetes.io/docs/reference/generated/kubelet/) Kubernetes "node agent" will pull the function images. Because this operation occurs in the Minikube VM, the command specifies `localhost` instead of the VM's IP address. +> - The `--registry-run` option defines the registry from which the [`kubelet`](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) Kubernetes "node agent" will pull the function images. Because this operation occurs in the Minikube VM, the command specifies `localhost` instead of the VM's IP address. When the function deployment completes, you can get the function information by running the following CLI command: ```sh @@ -150,5 +150,5 @@ See the following resources to make the best of your new Nuclio environment: - [Deploying Functions](../../tasks/deploying-functions.md) - [Invoking Functions by Name with a Kubernetes Ingress](../../concepts/k8s/function-ingress.md) - [More function examples](../../examples/README.md) -- [References](../../reference/index.html) +- [References](../../reference/index) - [Best Practices and Common Pitfalls](../../concepts/best-practices-and-common-pitfalls.md) diff --git a/docs/tasks/configuring-a-platform.md b/docs/tasks/configuring-a-platform.md index 06e2d7074a..5f75acb3dd 100644 --- a/docs/tasks/configuring-a-platform.md +++ b/docs/tasks/configuring-a-platform.md @@ -208,7 +208,7 @@ For example to define custom PyPI repository, add the following section: `envFrom` is a configuration of [`[]v1.envFromSource`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#envfromsource-v1-core) type which enables the specification of secrets/configMaps for propagation to all functions. Platform values take lower precedence -compared to function config values, which can be specified in the function config spec under `envFrom` ([function configuration](../reference/function-configuration) documentation). +compared to function config values, which can be specified in the function config spec under `envFrom` ([function configuration](../reference/function-configuration/function-configuration-reference) documentation). ```yaml envFrom: - secretRef: diff --git a/docs/tasks/deploy-functions-from-dockerfile.md b/docs/tasks/deploy-functions-from-dockerfile.md index 14aedd1629..00db355cbe 100644 --- a/docs/tasks/deploy-functions-from-dockerfile.md +++ b/docs/tasks/deploy-functions-from-dockerfile.md @@ -30,7 +30,7 @@ Create an empty directory in your preferred location. Then, download a simple Go curl -LO https://raw.githubusercontent.com/nuclio/nuclio/master/hack/examples/golang/helloworld/helloworld.go ``` -Now, create a Dockerfile by following the guidelines in the [Go reference](../reference/runtimes/golang/golang-reference.html#dockerfile). +Now, create a Dockerfile by following the guidelines in the [Go reference](../reference/runtimes/golang/golang-reference.md#dockerfile). > **Note:** Future versions of `nuctl` will automate creating these blueprints through something like `nuctl create blueprint --runtime python`, which will create a Dockerfile, a **function.yaml** file, and an empty Python handler. @@ -75,7 +75,7 @@ It is up to you to customize this Dockerfile, if you so choose (for example, by docker build -t helloworld-from-df . ``` -> **Note:** Each runtime has a different Dockerfile. Consult the appropriate [runtime reference documents](../reference/runtimes/index.html) to understand the specific nuances. +> **Note:** Each runtime has a different Dockerfile. Consult the appropriate [runtime reference documents](../reference/runtimes/index) to understand the specific nuances. ## Deploying a function built with Docker diff --git a/docs/tasks/deploying-functions.md b/docs/tasks/deploying-functions.md index 3fab309553..dfbcd8f194 100644 --- a/docs/tasks/deploying-functions.md +++ b/docs/tasks/deploying-functions.md @@ -339,10 +339,10 @@ reachable from your client unless you're running the client from inside a pod in If you wish to expose your function externally, for example, to be able to run `nuctl invoke` from outside the Kubernetes network, you can do so in one of 2 ways during deployment, both controlled via the [HTTP trigger spec](../reference/triggers/http): -1. Configure the function with a reachable [HTTP ingress](../reference/triggers/http#attributes). For +1. Configure the function with a reachable [HTTP ingress](../reference/triggers/http.md#attributes). For this to work you'll need to install an ingress controller on your cluster. See [function ingress document](../concepts/k8s/function-ingress.md) for more details. -2. Configure the function to use [serviceType](../reference/triggers/http.html#attributes) of type `nodePort`. +2. Configure the function to use [serviceType](../reference/triggers/http.md#attributes) of type `nodePort`. If you are deploying the function using [nuctl](../reference/nuctl/nuctl.md) CLI, you can also configure a `nodePort` easily by using the `--http-trigger-service-type=nodePort` CLI argument. @@ -351,5 +351,4 @@ If you are deploying the function using [nuctl](../reference/nuctl/nuctl.md) CLI ## What's next? - Check out how to [build functions once and deploy them many times](../tasks/deploying-pre-built-functions.md). -- Read more about [function configuration](../reference/function-configuration/function-configuration-reference.md). - +- Read more about [function configuration](../reference/function-configuration/function-configuration-reference.md). \ No newline at end of file diff --git a/docs/tasks/quick-start.md b/docs/tasks/quick-start.md index ee0d2e80da..eabd86aa4d 100644 --- a/docs/tasks/quick-start.md +++ b/docs/tasks/quick-start.md @@ -23,4 +23,3 @@ For a complete step-by-step guide to using Nuclio over Kubernetes, either with t - [Getting Started with Nuclio on Kubernetes](../setup/k8s/getting-started-k8s) - [Getting Started with Nuclio on Google Kubernetes Engine (GKE)](../setup/gke/getting-started-gke.md) - [Getting started with Nuclio on Azure Container Services (AKS)](../setup/aks/getting-started-aks.md) -- [Hands-on live Kubernetes sandbox and guiding instructions for Nuclio, free on Katacoda](https://katacoda.com/javajon/courses/kubernetes-serverless/nuclio)