-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal - How to run Kyma on top of Knative #150
Comments
Implementation: kyma-project/kyma#1845 |
Is it possible to contribute the helm chart as part of knative (or some other project)? To at least get some help from the community during update? It feels like it is a lot of work to manage the helm charts by our own. Second question: Shouldn't come knative from the cloud provider like gke? |
Yes, we'd like to contribute the chart to Knative, but a lot more changes need to be made to make it usable by community. We're not there yet, unfortunately. I think of a followup to work on it when this proposal is accepted and solution is merged.
Only serving is available as add-on on GKE and its's in early access. Despite that the situation is the same as for Istio. We have to deliver our version of it ("Batteries included"), but as a user I should also be allowed to use my existing version of Knative. With careful tampering with installation configuration it is possible now. The only thing that needs to be done is to remove Istio and Knative from component list in Installation CR and install them independently. I haven't tested it though. |
The proposal is approved. |
Created on 2018-12-05 by Szymon Janota (@sjanota)
Decision log
Context
One of the features that is currently being implemented in Kyma is the integration with Knative. It must be established how to run Kyma and Knative in a single Kubernetes cluster.
The following factors need to be taken into consideration:
With these criteria in mind, solutions must be chosen for these problems:
Each of these problems can be solved several ways. The possible solutions are discussed in the next section.
How to run Kyma and Knative on a single Kubernetes cluster and have both tools fully functional
Kyma and Knative are both installed in their own Namespaces, so they are not conflicting with each other directly. The only component they share is Istio. Kyma introduces several changes to the default Istio installation, whereas Knative does not modify Istio in an intrusive manner. This allows Knative to work with the Kyma version of Istio without any problems. Knative runs on top of Istio, but uses its own ingress gateway, while Kyma uses the Istio default Gateway. The Gateways are configured so that they can be accessed under different Services. Both ingress gateways and their configurations are installed in the
istio-system
Namespace. There are two approaches to making both tools accessible:Do not change the network configuration. Acces Kyma and Knative through their respective default ingress gateways. This solution was proved to be working by @kubadz in (POC) API exposure using istio gateway controller with knative installed kyma#1643
Route all traffic through the Knative ingress gateway, abandon the default Kyma ingress gateway. This solution was proved to be working by @sjanota in (POC) knative serving for API exposure using knative gateway controller kyma#1598.
Advantages:
Disadvantages:
How to fit Knative into Kyma's installation process
The "batteries included" principal is one of the most important ones for Kyma. That's why Knative integration needs to be available without requiring the users to install additional components on their own. Because of its dependency on Istio, Knative must be installed by the Kyma installer after Istio.
Knative team does not provide Helm charts for their releases. Instead, they provide
yaml
files containing all of the resources. Possible ways to integrate Knative installation into the Kyma installer:Create a Kubernetes job which installs Knative from the
yaml
file and verifies the installation, just like Helm would do. This job also adds required customizations.Advantages:
Disadvantages:
Create a chart which embeds Knative
yaml
files. Required customisations are added as generic parameters to the chart or changed using existing tools such as overrides or the istio-patch.Advantages:
Disadvantages:
How to version Knative within Kyma
Version URLs to specific versions of Knative.
Advantages:
yaml
file are not maintained in KymaDisadvantages:
Version all
yaml
files within the Kyma repositoryAdvantages:
Disadvantages:
Proposed solution
Proposed solution is to use the Knative ingress gateway as it allows for a better integration with Knative and makes cluster management easier. The other ingress gateway will still be deployed, but will remain unexposed and unused. As this solution requires changes in both Knative and Kyma deployments, extensibility is the main concern when thinking about installation. Therefore the chosen approach is to embed Knative in the chart. Packing Knative into a chart format eliminates the possibility to version only URLs. Instead, all of the required
yaml
files must be added to Kyma.Installing Kyma with Knative is optional. Installation can be enabled with the global.knative global installer override paired with a boolean value. Kyma without Knative installed will continue working as before.
Decision
Approved
Status
Proposed on 2018-12-06
Consequences
Advantages:
yaml
files. This is important from the eventing and serverless perspective.Disadvantages:
yaml
files to another.The text was updated successfully, but these errors were encountered: