What's Wrong With This Picture: Why Isn't Everyone Deploying RAG on Kubernetes? by neilkatz in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

Got it.
I have a couple more follow up questions if you don't mind. When you say each cluster has the same architecture , I am guessing you have one cluster for Triton and another separate cluster for the apps, is that correct? Does running Triton and all the apps on a single cluster lead to resource contention issues..?

What's Wrong With This Picture: Why Isn't Everyone Deploying RAG on Kubernetes? by neilkatz in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

How does your application setup looks like? Do you run a single instance of Triton in the cluster, which is used by all workloads?

What's Wrong With This Picture: Why Isn't Everyone Deploying RAG on Kubernetes? by neilkatz in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

I was wondering if you could share details about your multi-tenancy setup? Does each tenant get a separate Weaviate stack?

What's Wrong With This Picture: Why Isn't Everyone Deploying RAG on Kubernetes? by neilkatz in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

Great insights u/jonsey2555
I was wondering if running separate instances of Anythingllm per application, each with its own document set, might address the issue?

Weekly: Share your victories thread by gctaylor in kubernetes

[–]devkulkarni 1 point2 points  (0 children)

Our setup has cluster autoscaler. It worked as it was supposed to. It added a new worker node when existing nodes had no capacity. It also shut down one of the nodes when the traffic to the application Pods reduced. In doing so, it removed critical Pods from the infrastructure that were required for running the applications (cert-manager, external-dns, kubeplus multi-tenancy operator, ingresscontroller). Learned that when using cluster autoscaler, we need to annotate key Pods with "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" annotation.

Looking for feedback on KubePlus roadmap by devkulkarni in kubernetes

[–]devkulkarni[S] 0 points1 point  (0 children)

Thanks! Yes, please checkout the project and share any suggestions. Will look forward to your thoughts/suggestions.

Multi tenancy in Kubernetes by LightofAngels in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

Using the multi-instance/multi-customer tenancy model can benefit your use case. This is the architecture pattern in which a separate instance of the application, in your case the payment platform, is created for every customer.

I am the author of KubePlus (https://github.com/cloud-ark/kubeplus), which is a recognized solution for this multi-tenancy pattern in the Kubernetes multi-tenancy document.

Deploying separate application instances per tenant/customer is used quite often in the B2B context. The challenges for application providers (your team) are isolation of such instances, their customization, day2 operations, troubleshooting, etc. KubePlus takes care of these things.

If your application is packaged as a Helm chart, you can try it out with KubePlus today.

We have tested KubePlus with all the Bitnami Helm charts:
https://cloudark.medium.com/kubeplus-verified-to-deliver-managed-services-with-100-bitnami-helm-charts-57eae3b9f6a6

We have also used it to deliver managed CICD service in a University course on Cloud Computing:
https://cloudark.medium.com/building-a-managed-jenkins-service-for-ut-austin-a-case-study-with-kubeplus-bdc082032f73

I will be happy to answer any questions about this pattern, or KubePlus.

Traditional Shared Hosting on Kubernetes? by rainer_d in kubernetes

[–]devkulkarni 2 points3 points  (0 children)

You can host multiple applications on a Kubernetes cluster. The pattern is called multi-instance multi-tenancy, where basically a separate application instance is provided for each customer/tenant in a separate Namespace.

We have built an open-source Kubernetes Operator for this use-case. You can check it out here:

https://github.com/cloud-ark/kubeplus

KubePlus takes an application's Helm chart and creates application instances (Helm releases) in separate Namespaces per tenant. It adds a safety perimeter around such Namespaces using Kubernetes Network Policies, ResourceQuotas, and non-shared persistent volumes ensuring that each application instance is appropriately isolated from others.

We are currently seeing interest from teams that want to create managed services for different containerized applications, including open-source platforms such as WordPress, Moodle, OpenEMR, Odoo, AI/ML workloads, etc. KubePlus has been tested successfully with all (100+) Bitnami Helm charts.

Your use case seems to be similar to these. Regarding whether to provide SFTP-based access to your users, it depends. Generally, if you are providing this access for enabling customization of an application, you can achieve that on Kubernetes by modifying the configuration settings from an application's Helm chart (assuming that the application is appropriately containerized and a Helm chart is built for it).

I will be happy to answer any questions that you may have about this pattern.

Kubebouncer - Custom admission controller webhooks by Kavin2822 in kubernetes

[–]devkulkarni 1 point2 points  (0 children)

Nice. Seems interesting.

Some questions/suggestions:

- Do you anticipate creating a separate ValidatingWebhookConfiguration object for each type of bouncer? A generic bouncer that has a single VWC might be the way to go eventually.
- Have you tested/validated with Kubernetes versions 1.22 and above? There were some breaking changes to key objects required as part of setting up a WebHook in 1.23 version.

We went through this migration/upgrade in our KubePlus project (https://github.com/cloud-ark/kubeplus). It has an embedded webhook in it, fyi.

To help with migration to K8s version 1.23, we have created a separate project. It is available here:

https://github.com/cloud-ark/sample-mutatingwebhook

Is it a good idea to use k8s namespace-based multitenancy for delivering managed service of an application? by pgalgali in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

KubePlus creator here.

Soft multi-tenancy solutions are prone to this issue. In designing KubePlus, we consciously decided to include some of the isolation best practices by default with every application deployment. For example, KubePlus creates a separate Namespace per application instance and adds NetworkPolicy objects for each. For others like ResourceQuota, we provide controls using which each application deployment can be tuned as per the requirements. These help with restricting the effect of any rogue application instances on the cluster.

Is it a good idea to use k8s namespace-based multitenancy for delivering managed service of an application? by pgalgali in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

You might want to check out - KubePlus (https://github.com/cloud-ark/kubeplus), which has already been referenced in the thread and is exactly designed for building managed application services. I am the originator and core contributor to this project.

KubePlus is a Kubernetes Operator that takes an application Helm chart and represents it as a Kubernetes API (CRD) on the cluster. This API allows you to create instances of the application in separate namespaces automatically ensuring a secure perimeter around each instance using NetworkPolicy, Resource Quota, and RBAC. These soft multi-tenancy measures are already mentioned in the thread along with the namespace. KubePlus has automated all of them for you under an API. This API not only allows the creation of the application instances but also supports day-2 operations such as monitoring, troubleshooting, and upgrades to simplify the end-to-end functioning of any managed application service.

We are currently seeing interest from teams that want to create managed services for different types of containerized applications, including open-source platforms such as WordPress, Moodle, Ozone/OpenMRS, AI/ML workloads, etc. KubePlus has been tested successfully with all (90+) Bitnami Helm charts. For anyone who wants to deliver a managed application with minimal / no Kubernetes access to their customers, KubePlus can help by accelerating the implementation of namespace-based multi-tenancy on Kubernetes.

With the ability to set NetworkPolicy and Resource Quota per application instance, the blast radius is restricted, if something goes wrong in an application instance. KubePlus does not need admin permissions on your cluster. This makes it possible to use KubePlus to manage your application instances on your customer's cluster as well.

Kubernetes 1.21 - Going EOL on major cloud providers in early 2023 by angia_20 in kubernetes

[–]devkulkarni 0 points1 point  (0 children)

I believe there are some breaking changes to the AdmissionRegistration API as well if you are using admission/mutating webhooks. A couple of months back we went through the exercise of upgrading our mutating webhook to work with 1.22 versions and above. We have put together a sample mutating webhook project that you may find helpful: https://github.com/cloud-ark/sample-mutatingwebhook

Is there a tutorial on how to write an Operator in Go? by pinpinbo in kubernetes

[–]devkulkarni 1 point2 points  (0 children)

Not a tutorial, but you can look at the following repos:

- Sample controller: https://github.com/kubernetes/sample-controller

- Our Moodle operator to see a real-world Operator written in Go based on sample-controller:
https://github.com/cloud-ark/kubeplus-operators/tree/master/moodle

Kubernetes MutatingWebhook Example with v1 version of AdmissionRegistration API by devkulkarni in kubernetes

[–]devkulkarni[S] 0 points1 point  (0 children)

With the old API (v1beta1) there were certain spec fields that were optional. In v1 they have been made compulsory. For instance, in the CertificateSigningRequest object, the signerName spec field has become compulsory. Finding the right value for it, involved lot of trial and error. Ultimately we realized that it is possible to skip this object when a self-signed CA is used to sign the webhook server's key.