Git Product home page Git Product logo

volt-demo-app's Introduction

volt-demo-app is now archived

Please look at f5-shop-demo for the actively maintained version of this demo application.

volt-demo-app's People

Contributors

kreynoldsf5 avatar lesleycw avatar

Stargazers

Mars Chen avatar  avatar  avatar Vinnie Mazza avatar Shain Singh avatar Mark Menger avatar

Watchers

 avatar  avatar

volt-demo-app's Issues

Investigate intermittent response latency

Intermittently, the response latency for a request will be disproportionately long (> 10s). Volterra dashboards suggests the latency is in the app (as opposed to ADN hops).

Investigate why this is happening.

  • Already reviewed container logs and didn't find anything
  • Already tweaked workload flavors but this doesn't appear to have any effect

Proxy and Frontend Health checks

We can make things a little more robust with proxy and frontend health check (former on the HTTP LB and Latter on readiness/liveliness on the pod). For the latter, look at the loadgen examples in the google microservices respository.

Add IBD to HTTP LB

With the mid-Jan release, the platform now supports Integrated Bot Defense in tenants where it's enabled. Support for this feature should be added to the HTTP Loadbalancer.

Move Loadgen to separate namespace

Move the loadgen workload to a separate namespace. This will:

  1. Make RBAC easier
  2. Save vk8s resources in the application NS
  3. Make vk8s observability more intuitive

Malicious User Detection

Once the tor loadgen container is in place (which will greatly vary source IP of the traffic), enable malicious user detection by IP address.

Build Unit Demo Sites

  • Test running NGINX unit in an RE
  • Host this behind a URI route ({{app}}/unit)
  • Use standard 'hello world' apps for now -- add functionality later

Generate QR codes for security events

  • Write a customized block page
  • craft a unique request that is filterable under security events (that gets blocked)
  • generate a QR code per tenant for that request. Host the QR code in this repo so it can be linked.

This will allow people giving the demo to meaningfully show filtering capabilities.

Create Network Policies and assign to demo-app

Label-based or endpoint-based policies help prevent unauthorized traffic from reaching the endpoints. We should enable network policies for demo-app to highlight the policies capabilities.
Have a generator send requests to various endpoints to demo the blocking nature of policies

enable api endpoint discovery features

Dashboard data for API endpoint discovery features are not being populated.

  • update app type to collect relevant metrics
  • verify appropriate tag against relevant volterra object

Rev App Version

It appears the 'microservices-demo' project has pulled some of the older image tags from the gcr.io repos. We can no longer pull the older 'adservice' from the repo.

This is a good time to update to the new "boutique" app (moving away from the hipster shop branding).

TLS Stats

Update k6 loadgen so that TLS version is varied per session.

See here for more details.

Expired vk8s credentials are not updated in module.volterra

Terraform is not aware that the vk8s credentials have expired, so volterra_api_credential.cred and local_file.kubeconfig are not updated. Results in the following error:

│ Error: failed to create kubernetes rest client for read of resource: Get "https://tenant.console.ves.volterra.io/api/vk8s/namespaces/demo-app/demo-app-vk8s/api?timeout=32s": remote error: tls: expired certificate │ │ with module.kubectl.kubectl_manifest.documents[6], │ on modules/kubectl/main.tf line 28, in resource "kubectl_manifest" "documents": │ 28: resource "kubectl_manifest" "documents" {

Thanks

Reduce Logging where possible/necessary

There is little need to log excessively for this application.

  1. Proxy container -- no need to have access logs
  2. Frontend container -- same access logs there

Enable AI/ML in demo-app namespace

AI/ML should be enabled for demo-app ( demo-app NS) to discover API endpoints and create OAS files. It also aids in malicious user detection

Cart Service State

As deployed, the redis based cart service runs on each RE. This causes state inconsistencies with 'Add to Cart' functionality.

Adding stickiness to RE based loadbalancers are yielding 503s. The more correct way to solve for state would be to expose a single redis pod to all instances of the app.

Clean `failed` pods

For one reason or another, pods will fail (and the scheduler will recreate these). They are not being cleaned up and this is counting against storage quotas.

Fix this.

Implement Granular Pod Usage Limits

We're bumping up against quota usage limitations within a single vk8s. We need to implement more granular control of container resource limits within our pods.

In deployment.spec

    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"

With Workload flavors

See limits here.
We could create our own flavor (under 'shared' namespace) and assign it. Note this endpoint is not covered in the TF provider.

make kubeconfig workspace specific

The current TF didn't properly anticipate the app would be deployed over several workspaces/tenants.

The kubeconfig file should be tied to an individual workspaces state and it's lifecycle tied to the vk8s cluster/creation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.