Single-service Kubernetes

Getting started with Akita is as simple as dropping our Agent into your service or stack. Once we’re in, we gather all the data you need and surface it in the Akita app so you can easily see what your system is doing.

Below are instructions for installing the Akita Agent as a sidecar for a single service in Kubernetes.

📘

Looking for something more advanced?

We recommend single-service Kubernetes as a means of testing out Akita. If you would like to run Akita in your staging or production environment in Kubernetes, see Kubernetes host networking.

To get the Akita Agent running in a single Kubernetes service, you will:

  1. Meet the prerequisites
  2. Create an Akita Project
  3. Generate an API key for the Akita Agent
  4. Add your Akita credentials as a Kubernetes secret
  5. Add Akita Agent as a sidecar in a deployment template
  6. Apply the deployment template
  7. Verify that the Akita Agent is working

When you’ve completed the steps, you can also look at what is needed to scale your Akita deployment.

Thanks to Bruno Felix, who experimented with this method and provided us with his examples!

Prerequisites

You’ll need to be in our beta.

Your Kubernetes service must:

  • have access to the public internet
  • use unencrypted HTTP
  • be able to be restarted, as the installation process will cause a restart

Create a project

Log-in to the Akita App, and go to the Settings page.
Enter a project name and click "Create Project". We suggest naming the project after your app or deployment stack.

22542254

Give your project a name that's easy to remember – you'll need it later, when you start the Akita Agent on the CLI.

Generate API key

On the same Settings page, locate and click the “API Keys” tab. Click the “Set up the Akita client” button. Copy your API key secret into your favorite password manager or somewhere else you can easily access it. Also note your API key, as you will need it later.

780780

Add secret

You will need to add a bas64-encoded version of the Akita API key ID and key secret you created in a previous step to a YAML file.

You can encode your key and key secret by inserting them in the following commands:

$ echo -n $AKITA_API_KEY_ID | base64
$ echo -n $AKITA_API_KEY_SECRET | base64 -w 0

Then create or edit a YAML file to include the below using the encoded key ID and key secret values:

apiVersion: v1
kind: Secret
metadata:
  name: akita-secrets
type: Opaque
data:
  api-key-id: <base64 encoded key id>
  api-key-secret: <base64 encoded key secret>

Then run kubectl apply to create or update the secret.

Add sidecar

Find the file that describes the deployment of the service you want to monitor, or a standalone definition of a pod. It will have a section called “template” that describes the containers to run inside the pod, that will look something like this:

...
  template:
    metadata:
      labels:
        app: my-example-app
    spec:
      containers:
      - name: app
        image: bfwaterdog/app-example
        ports:
        - containerPort: 5000

You will then edit this file to add a second container in the same spec that specifies akitasoftware/cli, along with its command-line arguments. You will need to include the following:

  • Replace your-project-name with the Akita Project name you created earlier.
  • Ignore the API key id and secret section, as those will be pulled from the secret you created in the previous step.

Your new section should look like this:

...
     - name: akita
        image: akitasoftware/cli:latest
        env:
          - name: AKITA_API_KEY_ID
            valueFrom:
              secretKeyRef:
                name: akita-secrets
                key: api-key-id
          - name: AKITA_API_KEY_SECRET
            valueFrom:
              secretKeyRef:
                name: akita-secrets
                key: api-key-secret
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "AKITA_PID=$(pgrep akita) && kill -2 $AKITA_PID && tail -f /proc/$AKITA_PID/fd/1"]
        args:
          - apidump
          - --service
          - your-project-name

Add template

Run kubectl apply to create the new deployment or modify an existing one.

If you want to create an ephemeral pod using Akita as a sidecar, run kubectl run.

Verify

Find the pod that was created in response to the change, and run the following command to see the Akita Agent output.

kubectl logs <pod name> akita

In the Akita web console, check out the incoming data on the Model page. You should see a map of your API being generated as the Akita Agent gathers data.


Did this page help you?