├── .gitignore ├── README.md ├── antora.yml ├── documentation ├── antora.yml └── modules │ └── ROOT │ ├── assets │ └── images │ │ ├── build-proj.png │ │ ├── confirmation.png │ │ ├── eventing-proj.png │ │ ├── knative-operators.png │ │ ├── namespaces.png │ │ ├── ops-for-subs.png │ │ ├── pods-build.png │ │ ├── pods.png │ │ ├── serving-proj.png │ │ ├── sub-config-build.png │ │ ├── sub-config-eventing.png │ │ ├── sub-config-serving.png │ │ ├── sub-config.png │ │ └── subs.png │ └── pages │ ├── _attributes.adoc │ ├── assembly_knative-OCP-311.adoc │ ├── assembly_knative-OCP-4x.adoc │ ├── assembly_knative-minishift.adoc │ ├── assembly_knative-v0.5.0-OCP-4x.adoc │ ├── common │ ├── con_knative-OCP-311.adoc │ ├── con_knative-OCP-4x.adoc │ ├── con_knative-minishift.adoc │ ├── proc_allowing-external-access-knative-services-OCP-311.adoc │ ├── proc_creating-OCP-route-pointing-istio.adoc │ ├── proc_installing-knative-OCP-311.adoc │ ├── proc_installing-knative-OCP-4x.adoc │ └── proc_installing-knative-minishift.adoc │ ├── index.adoc │ └── nav.adoc ├── images ├── build-proj.png ├── confirmation.png ├── eventing-proj.png ├── knative-operators.png ├── namespaces.png ├── ops-for-subs.png ├── pods-build.png ├── pods.png ├── serving-proj.png ├── sub-config-build.png ├── sub-config-eventing.png ├── sub-config-serving.png ├── sub-config.png └── subs.png ├── knative-OCP-311.md ├── knative-OCP-4x.md ├── knative-minishift.md ├── knative-v0.3.0-OCP-4x.md ├── knative-v0.5.0-OCP-4x.md ├── site.yml └── tab-block.js /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .idea 3 | target/ 4 | build/ 5 | .gradle/ 6 | pom.xml.tag 7 | pom.xml.releaseBackup 8 | pom.xml.versionsBackup 9 | pom.xml.next 10 | release.properties 11 | dependency-reduced-pom.xml 12 | buildNumber.properties 13 | .mvn/timing.properties 14 | 15 | .cache 16 | 17 | # Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) 18 | !/.mvn/wrapper/maven-wrapper.jar 19 | .settings 20 | .vscode 21 | .project 22 | .classpath 23 | docs/output/* 24 | /hello.txt 25 | .idea/ 26 | work/**/* 27 | !work/README.md 28 | # 29 | **/setenv.sh 30 | 31 | src/** 32 | pom.xml 33 | mvnw 34 | mvnw.cmd 35 | .mvn 36 | gh-pages 37 | node_modules 38 | package.json 39 | dev-site.yml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **This repository is no longer maintained and all docs are no longer supported** 2 | 3 | Knative on OpenShift has moved to a [new location](https://github.com/openshift-knative/docs) 4 | -------------------------------------------------------------------------------- /antora.yml: -------------------------------------------------------------------------------- 1 | name: ocf-docs 2 | title: OpenShift Cloud Functions (OCF) 3 | version: master 4 | nav: 5 | - modules/ROOT/nav.adoc 6 | 7 | start_page: openshift-cloud-functions::index.adoc 8 | -------------------------------------------------------------------------------- /documentation/antora.yml: -------------------------------------------------------------------------------- 1 | name: ocf-docs 2 | title: OpenShift Cloud Functions (OCF) 3 | version: 'latest' 4 | nav: 5 | - modules/ROOT/nav.adoc 6 | 7 | start_page: openshift-cloud-functions::index.adoc.adoc 8 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/build-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/build-proj.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/confirmation.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/eventing-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/eventing-proj.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/knative-operators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/knative-operators.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/namespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/namespaces.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/ops-for-subs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/ops-for-subs.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/pods-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/pods-build.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/pods.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/serving-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/serving-proj.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/sub-config-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/sub-config-build.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/sub-config-eventing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/sub-config-eventing.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/sub-config-serving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/sub-config-serving.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/sub-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/sub-config.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/assets/images/subs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/assets/images/subs.png -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /_attributes.adoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/pages /_attributes.adoc -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /assembly_knative-OCP-311.adoc: -------------------------------------------------------------------------------- 1 | // This assembly is included in the following assemblies: 2 | // 3 | // master.adoc 4 | 5 | 6 | [id='knative-ocp-311_{context}'] 7 | = Knative on an OpenShift cluster 3.11 8 | 9 | // Knative on OpenShift 3.11 cluster overview 10 | include::common/con_knative-OCP-311.adoc[leveloffset=+1] 11 | 12 | // Installing Knative on an OpenShift 3.11 cluster using the script provided 13 | include::common/proc_installing-knative-OCP-311.adoc[leveloffset=+1] 14 | 15 | // Allowing external access to Knative services using a configured hostname (post-installation tasks) 16 | include::common/proc_allowing-external-access-knative-services-OCP-311.adoc[leveloffset=+1] 17 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /assembly_knative-OCP-4x.adoc: -------------------------------------------------------------------------------- 1 | // This assembly is included in the following assemblies: 2 | // 3 | // master.adoc 4 | 5 | [id='knative-ocp-4x_{context}'] 6 | = Knative on an OpenShift cluster 4.0 7 | 8 | // Knative on OpenShift cluster overview 9 | include::common/con_knative-OCP-4x.adoc[leveloffset=+1] 10 | 11 | // Installing Knative on an OpenShift cluster 4.0 using the script provided 12 | include::common/proc_installing-knative-OCP-4x.adoc[leveloffset=+1] 13 | 14 | // Allowing external access to Knative services for OCP 4.0 (Creating an OpenShift Route pointing to the istio-ingressgateway for each of your Knative Service) 15 | include::common/proc_creating-OCP-route-pointing-istio.adoc[leveloffset=+1] 16 | 17 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /assembly_knative-minishift.adoc: -------------------------------------------------------------------------------- 1 | // This assembly is included in the following assemblies: 2 | // 3 | // master.adoc 4 | 5 | 6 | [id='knative-minishift_{context}'] 7 | = Knative on a Minishift cluster 8 | 9 | // Knative on Minishift cluster overview 10 | include::common/con_knative-minishift.adoc[leveloffset=+1] 11 | 12 | // Installing Knative on a Minishift cluster using `install-on-minishift.sh` 13 | include::common/proc_installing-knative-minishift.adoc[leveloffset=+1] 14 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /assembly_knative-v0.5.0-OCP-4x.adoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/documentation/modules/ROOT/pages /assembly_knative-v0.5.0-OCP-4x.adoc -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/con_knative-OCP-311.adoc: -------------------------------------------------------------------------------- 1 | // This assembly is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-311.adoc 4 | 5 | 6 | [id='knative-ocp-311_{context}'] 7 | = Knative on an OpenShift cluster 8 | 9 | NOTE: The functionality introduced by Knative on an OpenShift cluster is developer preview only. Red Hat support is not provided. This release should not be used in a production environment. 10 | 11 | The script installation method is recommended. 12 | 13 | 14 | === Supported platform version 15 | [cols="50,50"] 16 | |=== 17 | |** Platform** | **Supported versions** 18 | | OpenShift | 3.11 19 | |=== 20 | 21 | NOTE: Installation of Docker and Kubernetes are required to use Knative on an OpenShift cluster. These components are outside the scope of this documentation. 22 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/con_knative-OCP-4x.adoc: -------------------------------------------------------------------------------- 1 | // This assembly is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-4x.adoc 4 | 5 | 6 | [id='knative-ocp-4x_{context}'] 7 | = Knative on an OpenShift 4.0 cluster 8 | 9 | NOTE: The functionality introduced by Knative on an OpenShift cluster is preview only. Red Hat support is not provided, and this release should not be used in a production environment. 10 | 11 | IMPORTANT: This Knative on OpenShift preview is only available by using the OpenShift 4.0 developer preview. You will require a Red Hat Developers login to try this. Visit link:https://try.openshift.com/[try.openshift.com] for getting started information. 12 | 13 | You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 14 | 15 | === Supported platform version 16 | 17 | IMPORTANT: Installation requires the OpenShift version `0.14.0` installer or later. Using the link:https://github.com/openshift/installer/releases[latest version installer] is recommended. 18 | 19 | [cols="50,50"] 20 | |=== 21 | |** Platform** | **Supported versions** 22 | | OpenShift | 4.0 Developer Preview 23 | |=== 24 | 25 | NOTE: Long-running clusters are not supported in this release. 26 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/con_knative-minishift.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-minishift.adoc 4 | 5 | 6 | [id='knative-minishift_{context}'] 7 | = Knative on a Minishift cluster 8 | 9 | NOTE: The functionality introduced is developer preview only. Red Hat support is not provided, and this release should not be used in a production environment. 10 | 11 | All of the required components of Knative on a Minishift cluster, including software dependencies and configurations, can be installed by using the script provided by Red Hat in the OpenShift Cloud Functions `knative-operators` repository. The script installation method is recommended. 12 | 13 | 14 | === Supported platform version 15 | [cols="50,50"] 16 | |=== 17 | |** Platform** | **Supported versions** 18 | | Minishift | 1.25.0 19 | |=== 20 | 21 | 22 | NOTE: Installation of Docker and Kubernetes are required to use Knative on an OpenShift cluster. These components, however, are outside the scope of this documentation. 23 | 24 | 25 | 26 | === Resource requirements 27 | 28 | The Minishift cluster must have at least 10GB of memory allocated to run Knative correctly. If you are running Minishift on your local machine, ensure that virtualization is enabled, as this installation requires the use of virtual machines (KVM). 29 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/proc_allowing-external-access-knative-services-OCP-311.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-311.adoc 4 | 5 | 6 | [id='allowing-external-access-knative-services_{context}] 7 | = Allowing external access to Knative services 8 | 9 | Use a configured hostname to access Knative services. 10 | 11 | NOTE: By default, Knative services are not accessible outside the OpenShift cluster. You can enable access by configuring a hostname. This method uses wildcard routing to automatically assign a hostname. 12 | 13 | 14 | .Procedure 15 | . Find the default routing subdomain of your OpenShift cluster. 16 | 17 | . Open the ConfigMap for your cluster to edit the Knative serving configuration. 18 | 19 | `oc edit configmap config-domain -n knative-serving` 20 | 21 | . Replace the default "example.com" with your default routing subdomain. 22 | 23 | . Configure the router to allow wildcard domains. 24 | 25 | `oc set env dc/router ROUTER_ALLOW_WILDCARD_ROUTES=true -n default` 26 | 27 | . Create a route that forwards wildcard traffic to the `knative-ingressgateway`. 28 | 29 | NOTE: This route requires one host per namespace, which runs Knative services. The format for the host of the route is `wildcard..`. 30 | 31 | [start=6] 32 | . Create a wildcard yaml file (in our example this is named `wildcard-routes.yml`) with the following contents: 33 | 34 | apiVersion: route.openshift.io/v1 35 | kind: Route 36 | metadata: 37 | name: knative-ingressgateway-wildcard 38 | namespace: 39 | spec: 40 | host: wildcard.. 41 | port: 42 | targetPort: http2 43 | to: 44 | kind: Service 45 | name: knative-ingressgateway 46 | weight: 100 47 | wildcardPolicy: Subdomain 48 | 49 | 50 | . Apply the yaml file. 51 | 52 | `oc apply -f wildcard-routes.yml` 53 | 54 | . Clone the demo repository. 55 | 56 | `git clone https://github.com/openshift-cloud-functions/demos.git` 57 | 58 | . Deploy the demo application. 59 | 60 | `oc apply -f ~/demos/knative-kubecon/serving/010-service.yaml` 61 | 62 | . View the domain that was assigned to the application. You can now access the demo application using this domain. 63 | 64 | `oc get service.serving.knative.dev/dumpy` 65 | 66 | 67 | 68 | .Additional resources 69 | 70 | * For more information about default routing subdomains, see link:https://docs.openshift.com/enterprise/3.0/install_config/install/deploy_router.html#customizing-the-default-routing-subdomain[OpenShift documentation]. 71 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/proc_creating-OCP-route-pointing-istio.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-4x.adoc 4 | 5 | 6 | [id='creating-OCP-route-pointing-istio_{context}'] 7 | = Creating an OpenShift Route pointing to the istio-ingressgateway for each of your Knative Services 8 | 9 | 10 | .Procedure 11 | 12 | . Create a route by using the `oc expose` command. 13 | 14 | ``` 15 | 16 | oc expose svc istio-ingressgateway --hostname=.. --name= -n istio-system` 17 | 18 | ``` 19 | 20 | 21 | For example, if the following inputs are used: 22 | * knative service name: _helloworld_ 23 | * project: _my project_ 24 | * cluster wildcard domain: _apps.demo1.d103.sandbox718.opentlc.com_ 25 | 26 | the `oc command` would be: 27 | 28 | ``` 29 | 30 | oc expose svc istio-ingressgateway --hostname=helloworld.myproject.apps.demo1.d103.sandbox718.opentlc.com --name=helloworld -n istio-system 31 | 32 | ``` -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/proc_installing-knative-OCP-311.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-311.adoc 4 | 5 | 6 | [id='installing-knative-OCP-using-script-311_{context}'] 7 | = Installing Knative on an OpenShift cluster 3.11 using the script provided 8 | 9 | Use a script to install Knative 10 | 11 | IMPORTANT: The functionality introduced by Knative on an OpenShift cluster is developer preview only. Red Hat support is not provided, and this release should not be used in a production environment. 12 | 13 | .Prerequisites 14 | * You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 15 | 16 | 17 | .Procedure 18 | . Login to the cluster using your admin credentials. 19 | 20 | `oc login ` 21 | 22 | . Clone the `knative-operators` repository. 23 | 24 | `git clone https://github.com/openshift-cloud-functions/knative-operators` 25 | `cd knative-operators/` 26 | `git fetch --tags` 27 | `git checkout openshift-v0.2.0` 28 | 29 | . Set the following SSH properties using your OpenShift cluster credentials. 30 | 31 | `export KUBE_SSH_USER=` 32 | `export KUBE_SSH_KEY=` 33 | 34 | . Navigate to the newly cloned repository and run the `install.sh` script. 35 | 36 | `./etc/scripts/install.sh` 37 | 38 | 39 | NOTE: The installation script takes around 20-30 minutes to complete, depending on your system. 40 | 41 | 42 | [start=5] 43 | . Once the script starts, you will see the following warning and prompt. 44 | 45 | `WARNING: This script will blindly attempt to install OLM, istio, and knative on your OpenShift cluster, so if any are already there, hijinks may ensue.` 46 | 47 | `If your cluster isn't minishift, ensure $KUBE_SSH_KEY and $KUBE_SSH_USER are set` 48 | 49 | `Pass -q to disable this warning` 50 | 51 | `Enter to continue or Ctrl-C to exit:` 52 | 53 | 54 | . Press Enter to continue. 55 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/proc_installing-knative-OCP-4x.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-OCP-4x.adoc 4 | 5 | 6 | [id='installing-knative-ocp-using-script-4x_{context}'] 7 | = Installing Knative on an OpenShift cluster 4.0 using the script provided 8 | 9 | NOTE: This Knative on OpenShift preview is only available by using the OpenShift 4.0 developer preview. 10 | 11 | 12 | .Prerequisites 13 | * You will require a Red Hat Developers login to try this. 14 | * Using 4.0 clusters with Knative requires visiting link:https://try.openshift.com/[try.openshift.com] 15 | 16 | 17 | .Procedure 18 | 19 | . Login to the cluster using your admin credentials. 20 | 21 | `oc login ` 22 | 23 | . Clone the `knative-operators` repository. 24 | 25 | `git clone https://github.com/openshift-cloud-functions/knative-operators` 26 | `cd knative-operators/` 27 | `git fetch --tags` 28 | `git checkout openshift-v0.3.0` 29 | 30 | . Navigate to the newly cloned repository and run the `install.sh` script. 31 | 32 | `./etc/scripts/install.sh` 33 | 34 | NOTE: The installation script takes 20-30 minutes to complete, depending on your system. 35 | 36 | [start=4] 37 | . Once the script starts, you will see the following warning and prompt: 38 | 39 | `WARNING: This script will attempt to install Istio, Knative, and OLM in your Kubernetes/OpenShift cluster.` 40 | 41 | `If targeting OpenShift, a recent version of 'oc' should be available in your PATH. Otherwise, 'kubectl' will be used.` 42 | 43 | `If using OpenShift 3.11 and your cluster isn't minishift, ensure \$KUBE_SSH_KEY and \$KUBE_SSH_USER are set` 44 | 45 | `Pass -q to disable this prompt` 46 | 47 | `Enter to continue or Ctrl-C to exit:` 48 | 49 | . Press Enter to continue. 50 | 51 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /common/proc_installing-knative-minishift.adoc: -------------------------------------------------------------------------------- 1 | // This module is included in the following assemblies: 2 | // 3 | // assembly_knative-minishift.adoc 4 | 5 | 6 | [id='installing-knative-minishift_{context}'] 7 | = Installing Knative on a Minishift cluster using a script 8 | 9 | Use the script `install-on-minishift.sh`, to install Knative on a Minishift cluster. 10 | 11 | NOTE: `install-on-minishift.sh` is destructive. It destroys the existing `knative` profile and recreates it with a working configuration. 12 | 13 | .Prerequisites 14 | * You need cluster administrator privileges to install and use Knative on a Minishift cluster. 15 | 16 | 17 | .Procedure 18 | . Clone the `knative-operators` repository. 19 | 20 | `git clone https://github.com/openshift-cloud-functions/knative-operators` 21 | `cd knative-operators/` 22 | `git fetch --tags` 23 | `git checkout openshift-v0.2.0` 24 | 25 | . Confirm that your Minishift instance has stopped. 26 | 27 | `minishift stop` 28 | 29 | . Navigate to the newly cloned repository and run the `install-on-minishift.sh` script. 30 | 31 | `./etc/scripts/install-on-minishift.sh` 32 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /index.adoc: -------------------------------------------------------------------------------- 1 | = Knative on OpenShift 2 | 3 | > Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment” 4 | 5 | [.text-right] 6 | __**Source**__: https://www.cncf.io/blog/2018/02/14/cncf-takes-first-step-towards-serverless-computing/ 7 | 8 | 9 | == Resources 10 | * link:https://redhat-developer-demos.github.io/knative-tutorial[Knative Tutorial] 11 | -------------------------------------------------------------------------------- /documentation/modules/ROOT/pages /nav.adoc: -------------------------------------------------------------------------------- 1 | * xref:knative-ocp-4x_{context}[Knative on OCP 4x] 2 | 3 | * xref:knative-ocp-311_{context}[Knative on OCP 3.11] 4 | * xref:knative-minishift_{context}[Knative on Minishift] -------------------------------------------------------------------------------- /images/build-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/build-proj.png -------------------------------------------------------------------------------- /images/confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/confirmation.png -------------------------------------------------------------------------------- /images/eventing-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/eventing-proj.png -------------------------------------------------------------------------------- /images/knative-operators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/knative-operators.png -------------------------------------------------------------------------------- /images/namespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/namespaces.png -------------------------------------------------------------------------------- /images/ops-for-subs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/ops-for-subs.png -------------------------------------------------------------------------------- /images/pods-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/pods-build.png -------------------------------------------------------------------------------- /images/pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/pods.png -------------------------------------------------------------------------------- /images/serving-proj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/serving-proj.png -------------------------------------------------------------------------------- /images/sub-config-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/sub-config-build.png -------------------------------------------------------------------------------- /images/sub-config-eventing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/sub-config-eventing.png -------------------------------------------------------------------------------- /images/sub-config-serving.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/sub-config-serving.png -------------------------------------------------------------------------------- /images/sub-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/sub-config.png -------------------------------------------------------------------------------- /images/subs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openshift-cloud-functions/Documentation/ed62143fe3f0e0231bf5861d06a7c7a2bcadea7a/images/subs.png -------------------------------------------------------------------------------- /knative-OCP-311.md: -------------------------------------------------------------------------------- 1 | # Knative on an OpenShift 3.11 cluster 2 | Developer Preview 3 | ------ 4 | 5 | > **IMPORTANT:** The functionality introduced by Knative on an OpenShift cluster is developer preview only. Red Hat support is not provided, and this release should not be used in a production environment. 6 | 7 | ## Prerequisites 8 | 9 | > **IMPORTANT:** You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 10 | 11 | ### Supported platform versions 12 | 13 | | Platform | Supported versions | 14 | | ------------- |:-------------:| 15 | | OpenShift | 3.11 | 16 | 17 | ## Installing Knative on an OpenShift cluster using the script provided 18 | 19 | 1. Login to the cluster using your admin credentials. 20 | 21 | `oc login ` 22 | 23 | 2. Clone the `knative-operators` repository. 24 | 25 | ``` 26 | git clone https://github.com/openshift-cloud-functions/knative-operators 27 | cd knative-operators/ 28 | git fetch --tags 29 | git checkout openshift-v0.2.0 30 | ``` 31 | 3. Set the following SSH properties using your OpenShift cluster credentials: 32 | 33 | `export KUBE_SSH_USER=` 34 | `export KUBE_SSH_KEY=` 35 | 36 | 4. Navigate to the newly cloned repository and run the `install.sh` script. 37 | 38 | `./etc/scripts/install.sh` 39 | 40 | >**NOTE** The installation script takes around 20-30 minutes to complete, depending on your system. 41 | 42 | 5. Once the script starts, you will see the following warning and prompt: 43 | 44 | ``` 45 | WARNING: This script will blindly attempt to install OLM, Istio, and Knative on your OpenShift cluster, so if any are already there, hijinks may ensue. 46 | 47 | If your cluster isn't minishift, ensure $KUBE_SSH_KEY and $KUBE_SSH_USER are set 48 | 49 | Pass -q to disable this warning 50 | 51 | Enter to continue or Ctrl-C to exit: 52 | 53 | ``` 54 | 55 | 6. Press Enter to continue. 56 | 57 | 58 | ## Post-installation tasks 59 | 60 | ### Allowing external access to Knative services using a configured hostname. 61 | 62 | Your Knative services will not be accessible from outside of the OpenShift cluster by default, however you can enable access by configuring a hostname. This method uses wildcard routes to automatically assign a hostname to Knative services. 63 | 64 | 1. Find the default routing subdomain of your OpenShift cluster. For more information, see [Additional resources](#additional-resources). 65 | 66 | 2. Open the config map for your cluster to edit the Knative serving configuration. 67 | 68 | `oc edit configmap config-domain -n knative-serving` 69 | 70 | 3. Replace the default "example.com" with your default routing subdomain. 71 | 72 | 4. Configure your router to allow wildcard domains. 73 | 74 | `oc set env dc/router ROUTER_ALLOW_WILDCARD_ROUTES=true -n default` 75 | 76 | 5. Create a route that forwards wildcard traffic to the `knative-ingressgateway`. 77 | > **NOTE:** This route requires one host per namespace that is running Knative services. The format for the host of the route is `wildcard..`. 78 | 79 | To do this, you must create a wildcard yaml file (in our example this is named `wildcard-routes.yml`) with the following content: 80 | ``` 81 | apiVersion: route.openshift.io/v1 82 | kind: Route 83 | metadata: 84 | name: knative-ingressgateway-wildcard 85 | namespace: 86 | spec: 87 | host: wildcard.. 88 | port: 89 | targetPort: http2 90 | to: 91 | kind: Service 92 | name: knative-ingressgateway 93 | weight: 100 94 | wildcardPolicy: Subdomain 95 | ``` 96 | 6. Apply the yaml file. 97 | 98 | `oc apply -f wildcard-routes.yml` 99 | 100 | 7. Clone the demo repository. 101 | 102 | `git clone https://github.com/openshift-cloud-functions/demos.git` 103 | 104 | 8. Deploy the demo application. 105 | 106 | `oc apply -f ~/demos/knative-kubecon/serving/010-service.yaml` 107 | 108 | 9. View the domain that was assigned to the application. You can now access the demo application using this domain. 109 | 110 | `oc get service.serving.knative.dev/dumpy` 111 | 112 | ## Additional resources 113 | 114 | * For more information about default routing subdomains, see [OpenShift documentation](https://docs.openshift.com/enterprise/3.0/install_config/install/deploy_router.html#customizing-the-default-routing-subdomain). 115 | -------------------------------------------------------------------------------- /knative-OCP-4x.md: -------------------------------------------------------------------------------- 1 | # Knative on an OpenShift 4.0 cluster 2 | ------ 3 | 4 | > **IMPORTANT:** The functionality introduced by Knative on an OpenShift cluster is preview only. Red Hat support is not provided, and this release should not be used in a production environment. 5 | 6 | > **NOTE:** This release includes upstream Knative Serving `v0.4.1`, Knative Eventing `v0.4.1` and Knative Build `v0.4.0`. 7 | 8 | ## Prerequisites 9 | 10 | > **IMPORTANT:** You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 11 | 12 | ### Supported platform versions 13 | 14 | > **NOTE:** This Knative on OpenShift preview is only available by using the OpenShift 4.0 developer preview. You will require a Red Hat Developers login to try this. Visit [try.openshift.com](https://try.openshift.com/) for getting started information. 15 | 16 | > **IMPORTANT:** Installation requires the OpenShift version `0.16.1` installer or later. Using the [latest version installer](https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/) is recommended. 17 | 18 | | Platform | Supported versions | 19 | | ------------- |:-------------:| 20 | | OpenShift | [4.0 Developer Preview](https://try.openshift.com/) | 21 | 22 | > **NOTE:** Long-running clusters are not supported in this release. 23 | 24 | ## Installing Knative on an OpenShift cluster using the script provided 25 | 26 | 1. Login to the cluster using your admin credentials. 27 | 28 | `oc login ` 29 | 30 | 2. Clone the `knative-operators` repository. 31 | 32 | ``` 33 | git clone https://github.com/openshift-cloud-functions/knative-operators 34 | cd knative-operators/ 35 | git fetch --tags 36 | git checkout openshift-v0.5.0 37 | ``` 38 | 39 | 3. Navigate to the newly cloned repository and run the `install.sh` script. 40 | 41 | `./etc/scripts/install.sh` 42 | 43 | >**NOTE:** The `install.sh` script can time-out waiting for the Istio operator to complete, and you may receive an `ERROR: Timed out` message. If the `install.sh` script fails to install Istio, run the script again after it times out. 44 | 45 | 4. Once the script starts, you will see the following warning and prompt. 46 | 47 | ``` 48 | WARNING: This script will attempt to install Istio, Knative, and OLM in your Kubernetes/OpenShift cluster. 49 | 50 | If targeting OpenShift, a recent version of 'oc' should be available in your PATH. Otherwise, 'kubectl' will be used. 51 | 52 | Pass -q to disable this prompt 53 | 54 | Enter to continue or Ctrl-C to exit: 55 | 56 | ``` 57 | 58 | 5. Press Enter to continue. 59 | 60 | 61 | ## Post-installation tasks 62 | 63 | ### Allowing external access to Knative services for OCP 4.0 64 | 65 | #### Creating an OpenShift Route pointing to the istio-ingressgateway for each of your Knative Service. 66 | 67 | 1. Create a route by using the `oc expose` command. 68 | 69 | ``` 70 | oc expose svc istio-ingressgateway --hostname=.. --name= -n istio-system` 71 | ``` 72 | 73 | For example, if the following inputs are used: 74 | * knative service name: *helloworld* 75 | * project: *my project* 76 | * cluster wildcard domain: *apps.demo1.d103.sandbox718.opentlc.com* 77 | 78 | the `oc command` would be: 79 | 80 | ``` 81 | oc expose svc istio-ingressgateway --hostname=helloworld.myproject.apps.demo1.d103.sandbox718.opentlc.com --name=helloworld -n istio-system 82 | ``` 83 | 84 | -------------------------------------------------------------------------------- /knative-minishift.md: -------------------------------------------------------------------------------- 1 | # Knative on a Minishift cluster 2 | Preview 3 | ------ 4 | 5 | > **IMPORTANT:** The functionality introduced by is preview only. Red Hat support is not provided, and this release should not be used in a production environment. 6 | 7 | ## Prerequisites 8 | 9 | > **IMPORTANT:** You will need cluster administrator privileges to install and use Knative on a Minishift cluster. 10 | 11 | ### Supported platform versions 12 | 13 | | Platform | Supported versions | 14 | | ------------- |:-------------:| 15 | | Minishift | 1.25.0 | 16 | 17 | ### Resource requirements 18 | 19 | The Minishift cluster must have at least 10GB of memory allocated to run Knative correctly. 20 | 21 | If you are running Minishift on your local machine, ensure that virtualization is enabled, as this installation requires the use of virtual machines (KVM). 22 | 23 | 24 | ## Installing Knative on a Minishift cluster using install-on-minishift.sh 25 | 26 | > **IMPORTANT:** `install-on-minishift.sh` is destructive. It will destroy the existing `knative` profile and recreate it with known-to-work configuration. 27 | 28 | 1. Clone the `knative-operators` repository. 29 | 30 | `git clone https://github.com/openshift-cloud-functions/knative-operators` 31 | 32 | `cd knative-operators/` 33 | 34 | `git fetch --tags` 35 | 36 | `git checkout openshift-v0.2.0` 37 | 38 | 39 | 2. Confirm that your Minishift instance has been stopped. 40 | 41 | `minishift stop` 42 | 43 | 3. Navigate to the newly cloned repository and run the install-on-minishift.sh script. 44 | 45 | `./etc/scripts/install-on-minishift.sh` 46 | -------------------------------------------------------------------------------- /knative-v0.3.0-OCP-4x.md: -------------------------------------------------------------------------------- 1 | # Knative on an OpenShift 4.0 cluster 2 | ------ 3 | 4 | > **IMPORTANT:** The functionality introduced by Knative on an OpenShift cluster is preview only. Red Hat support is not provided, and this release should not be used in a production environment. 5 | 6 | ## Prerequisites 7 | 8 | > **IMPORTANT:** You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 9 | 10 | ### Supported platform versions 11 | 12 | > **NOTE:** This Knative on OpenShift preview is only available via the OpenShift 4.0 developer preview. You will require a Red Hat Developers login to try this. Visit [try.openshift.com](https://try.openshift.com/) for getting started information. 13 | 14 | | Platform | Supported versions | 15 | | ------------- |:-------------:| 16 | | OpenShift | [4.0 Developer Preview](https://try.openshift.com/) | 17 | 18 | ## Installing Knative on an OpenShift cluster using the script provided 19 | 20 | 1. Login to the cluster using your admin credentials. 21 | 22 | `oc login ` 23 | 24 | 2. Clone the `knative-operators` repository. 25 | 26 | `git clone https://github.com/openshift-cloud-functions/knative-operators` 27 | 28 | `cd knative-operators/` 29 | 30 | `git fetch --tags` 31 | 32 | `git checkout openshift-v0.3.0` 33 | 34 | 35 | 3. Navigate to the newly cloned repository and run the `install.sh` script. 36 | 37 | `./etc/scripts/install.sh` 38 | 39 | >**NOTE** The installation script takes around 20-30 minutes to complete, depending on your system. 40 | 41 | 4. Once the script starts, you will see the following warning and prompt. 42 | 43 | ``` 44 | WARNING: This script will attempt to install Istio, Knative, and OLM in your Kubernetes/OpenShift cluster. 45 | 46 | If targeting OpenShift, a recent version of 'oc' should be available in your PATH. Otherwise, 'kubectl' will be used. 47 | 48 | If using OpenShift 3.11 and your cluster isn't minishift, ensure \$KUBE_SSH_KEY and \$KUBE_SSH_USER are set 49 | 50 | Pass -q to disable this prompt 51 | 52 | Enter to continue or Ctrl-C to exit: 53 | ``` 54 | 55 | 5. Press Enter to continue. 56 | -------------------------------------------------------------------------------- /knative-v0.5.0-OCP-4x.md: -------------------------------------------------------------------------------- 1 | # Knative on an OpenShift 4.0 cluster 2 | ------ 3 | 4 | > **IMPORTANT:** The functionality introduced by Knative on an OpenShift cluster is preview only. Red Hat support is not provided, and this release should not be used in a production environment. 5 | 6 | > **NOTE:** This release includes upstream Knative Serving `v0.5.1`, Knative Eventing `v0.5.0` and Knative Build `v0.5.0`. 7 | 8 | ## Prerequisites 9 | 10 | > **IMPORTANT:** You will need cluster administrator privileges to install and use Knative on an OpenShift cluster. 11 | 12 | ### Supported platform versions 13 | 14 | > **NOTE:** This Knative on OpenShift preview is only available by using the OpenShift 4.0 developer preview. You will require a Red Hat Developers login to try this. Visit [try.openshift.com](https://try.openshift.com/) for getting started information. 15 | 16 | > **IMPORTANT:** Installation requires the OpenShift version `0.16.1` installer or later. Using the [latest version installer](https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/) is recommended. 17 | 18 | | Platform | Supported versions | 19 | | ------------- |:-------------:| 20 | | OpenShift | [4.0 Developer Preview](https://try.openshift.com/) | 21 | 22 | > **NOTE:** Long-running clusters are not supported in this release. 23 | 24 | ## Installing Knative on an OpenShift cluster using the script provided 25 | 26 | 1. Login to the cluster using your admin credentials. 27 | 28 | `oc login ` 29 | 30 | 2. Clone the `knative-operators` repository. 31 | 32 | ``` 33 | git clone https://github.com/openshift-cloud-functions/knative-operators 34 | cd knative-operators/ 35 | git fetch --tags 36 | git checkout openshift-v0.5.0 37 | ``` 38 | 39 | 3. Navigate to the newly cloned repository and run the `install.sh` script. 40 | 41 | `./etc/scripts/install.sh` 42 | 43 | >**NOTE:** The `install.sh` script can time-out waiting for the Istio operator to complete, and you may receive an `ERROR: Timed out` message. If the `install.sh` script fails to install Istio, run the script again after it times out. 44 | 45 | 4. Once the script starts, you will see the following warning and prompt. 46 | 47 | ``` 48 | WARNING: This script will attempt to install Istio, Knative, and OLM in your Kubernetes/OpenShift cluster. 49 | 50 | If targeting OpenShift, a recent version of 'oc' should be available in your PATH. Otherwise, 'kubectl' will be used. 51 | 52 | Pass -q to disable this prompt 53 | 54 | Enter to continue or Ctrl-C to exit: 55 | 56 | ``` 57 | 58 | 5. Press Enter to continue. 59 | 60 | 61 | ## Post-installation tasks 62 | 63 | ### Allowing external access to Knative services for OCP 4.0 64 | 65 | #### Creating an OpenShift Route pointing to the istio-ingressgateway for each of your Knative Service. 66 | 67 | >**NOTE:** The install script sets privileges for a specific namespace. Results are different when using a namespace other than "myproject". If the user wants to use the install script in another namespace, it needs to be called out. 68 | 69 | 1. Create a route by using the `oc expose` command. 70 | 71 | ``` 72 | oc expose svc istio-ingressgateway --hostname=.. --name= -n istio-system` 73 | ``` 74 | 75 | For example, if the following inputs are used: 76 | * knative service name: *helloworld* 77 | * project: *my project* 78 | * cluster wildcard domain: *apps.demo1.d103.sandbox718.opentlc.com* 79 | 80 | the `oc command` would be: 81 | 82 | ``` 83 | oc expose svc istio-ingressgateway --hostname=helloworld.myproject.apps.demo1.d103.sandbox718.opentlc.com --name=helloworld -n istio-system 84 | ``` 85 | 86 | -------------------------------------------------------------------------------- /site.yml: -------------------------------------------------------------------------------- 1 | runtime: 2 | cache_dir: ./.cache/antora 3 | 4 | site: 5 | title: OpenShift Cloud Functions (OCF) 6 | url: https://openshift-cloud-functions.github.io/Documentation/ 7 | start_page: openshift-cloud-functions::index.adoc 8 | 9 | content: 10 | sources: 11 | - url: https://github.com/openshift-cloud-functions/Documentation.git 12 | branches: master 13 | 14 | asciidoc: 15 | extensions: 16 | - ./tab-block.js 17 | attributes: 18 | experimental: '' 19 | idprefix: '' 20 | idseparator: '-' 21 | linkattrs: '' 22 | 23 | ui: 24 | bundle: 25 | url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 26 | snapshot: true 27 | output: 28 | dir: ./gh-pages 29 | -------------------------------------------------------------------------------- /tab-block.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Extends the AsciiDoc syntax to support a tabset element. The tabset is 3 | * created from a dlist that is enclosed in an example block marked with the 4 | * tabs style. 5 | * 6 | * Usage: 7 | * 8 | * [tabs] 9 | * ==== 10 | * Tab A:: 11 | * + 12 | * -- 13 | * Contents of tab A. 14 | * -- 15 | * Tab B:: 16 | * + 17 | * -- 18 | * Contents of tab B. 19 | * -- 20 | * ==== 21 | * 22 | * To use this extension, register the extension.js file with Antora (i.e., 23 | * list it as an AsciiDoc extension in the Antora playbook file), combine 24 | * styles.css with the styles for the site, and combine behavior.js with the 25 | * JavaScript loaded by the page. 26 | * 27 | * @author Dan Allen 28 | */ 29 | const IdSeparatorChar = '-' 30 | const InvalidIdCharsRx = /[^a-zA-Z0-9_]/g 31 | const List = Opal.const_get_local(Opal.module(null, 'Asciidoctor'), 'List') 32 | const ListItem = Opal.const_get_local(Opal.module(null, 'Asciidoctor'), 'ListItem') 33 | 34 | const generateId = (str, idx) => `tabset${idx}_${str.toLowerCase().replace(InvalidIdCharsRx, IdSeparatorChar)}` 35 | 36 | function tabsBlock () { 37 | this.onContext('example') 38 | this.process((parent, reader, attrs) => { 39 | const createHtmlFragment = (html) => this.createBlock(parent, 'pass', html) 40 | const tabsetIdx = parent.getDocument().counter('idx-tabset') 41 | const nodes = [] 42 | nodes.push(createHtmlFragment('
')) 43 | const container = this.parseContent(this.createBlock(parent, 'open'), reader) 44 | const sourceTabs = container.getBlocks()[0] 45 | if (!(sourceTabs && sourceTabs.getContext() === 'dlist' && sourceTabs.getItems().length)) return 46 | const tabs = List.$new(parent, 'ulist') 47 | tabs.addRole('tabs') 48 | const panes = {} 49 | sourceTabs.getItems().forEach(([[title], details]) => { 50 | const tab = ListItem.$new(tabs) 51 | tabs.$append(tab) 52 | const id = generateId(title.getText(), tabsetIdx) 53 | tab.text = `[[${id}]]${title.text}` 54 | let blocks = details.getBlocks() 55 | const numBlocks = blocks.length 56 | if (numBlocks) { 57 | if (blocks[0].context === 'open' && numBlocks === 1) blocks = blocks[0].getBlocks() 58 | panes[id] = blocks.map((block) => (block.parent = parent) && block) 59 | } 60 | }) 61 | nodes.push(tabs) 62 | nodes.push(createHtmlFragment('
')) 63 | Object.entries(panes).forEach(([id, blocks]) => { 64 | nodes.push(createHtmlFragment(`
`)) 65 | nodes.push(...blocks) 66 | nodes.push(createHtmlFragment('
')) 67 | }) 68 | nodes.push(createHtmlFragment('
')) 69 | nodes.push(createHtmlFragment('
')) 70 | parent.blocks.push(...nodes) 71 | }) 72 | } 73 | 74 | module.exports.register = (registry, context) => { 75 | registry.block('tabs', tabsBlock) 76 | } 77 | --------------------------------------------------------------------------------