GithubHelp home page GithubHelp logo

otterize / credentials-operator Goto Github PK

View Code? Open in Web Editor NEW
54.0 4.0 3.0 16.96 MB

Automatically register and generate AWS, GCP & Azure IAM roles, X.509 certificates and username/password pairs for Kubernetes pods using cert-manager, CNCF SPIRE or Otterize Cloud

License: Apache License 2.0

Dockerfile 0.25% Go 96.42% Makefile 3.33%
cert-manager certificates certificates-generator hacktoberfest kubernetes machine-identity machine-identity-management mtls spire

credentials-operator's Introduction

Otterize Credentials Operator

build go report community

About | Quick tutorial | How does the Credentials Operator work? | Docs | Contributing | Slack


About

The Otterize Credentials Operator automatically resolves pods to dev-friendly service names, registers them with a SPIRE server or with Otterize Cloud, and optionally provisions credentials as Kubernetes secrets.

How does the Credentials operator work?

Service entry registration

Once the operator resolves the service name for a pod, it labels the pod and registers an entry with the SPIRE server or with Otterize cloud.

Credentials generation

After the operator has registered the pod, which happens automatically upon startup, the pod can use the SPIRE Workload API or Otterize Cloud to generate x509 Certificate with <servicename>.<namespace> as its CN.

Additionally, the operator consults the label credentials-operator.otterize.com/tls-secret-name. If that label exists, the operator creates a secret named after the value of the label with X.509 credentials within (SVID if you use SPIRE). This way, the pod can get autogenerated credentials without modifying its code.

For more information, see the docs.

Service name resolution and automatic pod labeling

Service name resolution is performed one of two ways:

  1. If an intents.otterize.com/service-name annotation is present, that name is used.
  2. If not, a recursive lookup is performed for the Kubernetes resource owner for a Pod until the root is reached. For example, if you have a Deployment named client, which then creates and owns a ReplicaSet, which then creates and owns a Pod, then the service name for that pod is client - same as the name of the Deployment.

The value resulting from this process forms the value of the label credentials-operator.otterize.com/service-name.

AWS IAM

The credentials operator, together with the intents operator, enables the intent-based declarative management of AWS IAM roles and policies.

To generate an AWS IAM role for a pod, apply the following label to it:

metadata:
 labels:
  "credentials-operator.otterize.com/create-aws-role": "true"

Try the AWS IAM tutorial to learn more.

Azure IAM

The credentials operator, together with the intents operator, enables the intent-based declarative management of Azure IAM identities and role assignments.

To generate an Azure managed identity for a pod, apply the following label to it:

metadata:
 labels:
  "credentials-operator.otterize.com/create-azure-workload-identity": "true"

Try the Azure IAM tutorial to learn more.

Google Cloud IAM

The credentials operator, together with the intents operator, enables the intent-based declarative management of Google Cloud service accounts and policies.

To generate a Google Cloud service account for a pod, apply the following label to it:

metadata:
 labels:
  "credentials-operator.otterize.com/create-gcp-sa": "true"

Try the GCP IAM tutorial to learn more.

Contributing

  1. Feel free to fork and open a pull request! Include tests and document your code in Godoc style.
  2. In your pull request, please refer to an existing issue or open a new one.
  3. For instructions on developing for the operator, see the README for that section.
  4. See our Contributor License Agreement.

Slack

Join the Otterize Slack!

credentials-operator's People

Contributors

amit7itz avatar amitlicht avatar davidgs avatar dependabot[bot] avatar evyatarmeged avatar netanelbollag avatar omris94 avatar orishavit avatar orishoshan avatar otterobert avatar roekatz avatar tomergreenwald avatar usarid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

credentials-operator's Issues

Support Prometheus metrics

Today, only the network-mapper exposes Prometheus metrics (default Golang metrics as well as custom metrics).

Proposal: Expose Prometheus default Golang metrics as well as custom metrics, such as secret created, updated, and so on.

Support pod restart on certificate renewal

Issue: Some applications might not watch the secrets for updates. If the certificate expires it will cause a running application to fail to communicate. Currently, users have to support it in their applications or use solutions like wave.

Let's add support for configurable pod-restart on certificate renewal with annotation.

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.