Giter Club home page Giter Club logo

curiefense-emissary-poc's Issues

Production image build process for Emissary + Curieproxy

We need to figure out a build process for production images. A couple things to consider:

  • Emissary support policy (how many versions do they support)?
  • Curiefense support policy
  • Emissary release cycle
  • Curiefense release cycle

An optimal scenario: support the latest patch versions, two minor versions and all supported major versions of each. That would result in a matrix build, combining all support versions (minus all incompatible versions).

For example:

  • Emissary supported versions: 2.3.x, 3.2.x
  • Curiefense supported versions: 1.5.x, 1.6.x

Emissary 2.3.x and Curiefense 1.6.x are known NOT to work (eg. too old Envoy version, etc).

The build matrix would look like this:

  • Emissary 2.3.x, Curiefense 1.5.x
  • Emissary 2.4.x, Curiefense 1.5.x
  • Emissary 2.4.x, Curiefense 1.6.x

Builds should be automated as much as possible (for example: use Dependabot for automatically updating and releasing patch versions)

Requires #8

References

Emissary + Curieproxy production deployment

Emissary comes with two installation methods:

  • Helm
  • Kubernetes YAML / Kustomize

In order to make Curieproxy work, the following changes have to be made:

  • the Module CR has to be extended with the necessary lua_scripts (note: this may change from version to version (Curiefense))
  • the image should be changed to an image containing Curieproxy
  • a sidecar container has to be added (Curiesync)
  • an emptyDir volume has to be mounted to both containers (Emissary, Curiesync)

In addition to the above, the Curiesync container needs a ConfigMap or a Secret containing credentials to the config store bucket.

Also, a LogService CR can optionally be created to send logs to Curielogger (although this may change in 1.6).

The Kubernetes YAML method either requires patched YAML files, or use Kustomize (see this repo).

The Helm chart provides all the necessary extension points, so it should be a matter of documentation.

Keep in mind that Curieproxy also requires Redis for features, like rate limiting. The credentials and information for that has to be injeceted.....probably to the Curieproxy (Emissary) container?

Curieconf server + UI + Curielogger deployment

The current deployment mechanism is using a Helm chart in https://github.com/curiefense/curiefense-helm

This is in no way suitable for a production environment:

  • Chart is heavy with all kinds of dependencies usually not installed in a production environment (Prometheus, Grafana, Elasticsearch, Kibana, etc)
  • Chart supports various environments which aren't necessary (eg. Istio)
  • a Helm chart may not even be the right way to install these components (Kustomize might be better)

Emissary integration questions

  • Lua scripts filter ordering: ideally Curiefense should always come first. Is that currently possible?
  • LogService: are requests logged after going through all filters (lua included)?

Access log forwarding

In the Kubernetes world a common pattern for collecting and forwarding logs is using FluentBit and Fluentd:

  • Drop filebeat
  • Mark access logs with a marker, so Fluentd can route them accordingly

This may not be an issue once Curiefense 1.6 is out.

Production Dockerfile

Create a Dockerfile that contains the minimal files and build steps required for a production image.

Can't see any logs in Kibana

I suspect Curiefense (proxy) expects the curielogger component to be in the same namespace (at least I vaguely remember that I had to install nginx ingress in the same namespace as curiefense back when I tried it last time).

MaxMind database update

How is the MaxMind database handled at the moment? Is it updated? If so, how?

Do we need a custom update process?

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.