Conjur - Kubernetes architecture

This topic describes the architecture of a Conjur - Kubernetes integration.

This section applies to Kubernetes implementations, including native Kubernetes, OpenShift, and GKE.

Integration architecture

User applications are deployed in Kubernetes namespaces. You deploy the Conjur Server in its own Kubernetes namespace, or outside of Kubernetes. Applications gain access to Conjur through authenticated login orchestrated by an authentication client.

The following image shows how applications gain access to secrets in Conjur (deployed inside Kubernetes) using the Kubernetes Authenticator Client:

Components in the Conjur-Kubernetesintegration

The following table describes the components in the Conjur - Kubernetes integration:

Type

Component

Description

Conjur namespace

Conjur Server

Supports full read and write operations, as well as management of policies, secrets, and Conjur services.

Kubernetes/JWT Authenticator

A plugin to the Conjur Server. Enabled as a service to support application pod authentication.

Conjur Service Manages access to Conjur.
Database

The Conjur database. It is installed in a separate pod in the Conjur namespace or externally. External to the cluster is recommended.

Application namespace

 

 

Application containers

Your deployed applications.

Kubernetes Authenticator Client (conjur-authn-k8s-client)

Contacts the Kubernetes Authenticator service in the Conjur Server on behalf of your application. The client obtains the access token that allows logging in to Conjur, and writes the token to the shared volume. The Kubernetes Authenticator client is deployed in the same pod with each user application as either a sidecar or init container.

 

Shared volume

Provides the Conjur access token to the application.