The simplest way to provision for customers of AWS, OPERATR is 100% compatible with Amazon MSK.

Subcribe to our Marketplace listing then use our CloudFormation templates to launch in ECS or see our guide to deploying OPERATR to EKS below.

AWS Marketplace subscriptions are billed by the hour, they do not require you to purchase a license. Our preferred deployment is ECS/Fargate.

Get started.

Provision OPERATR in minutes as an ECS Task or EKS Pod for US 0.16/hr per instance:

  • View our Marketplace listing
  • Click 'Continue to Subscribe'.
  • View the terms and conditions then click 'Continue to Configuration'.
  • Choose the latest version then click 'Continue to Launch'.
  • Click 'View container image details' for instructions on obtaining your OPERATR docker image.

Get configured.

Once you have a marketplace subscription, you need to configure OPERATR to run with your Kafka Cluster.

OPERATR is a single docker container that connects to your Kafka cluster with exactly the same configuration as a Kafka Producer or Consumer.

OPERATR is configured via environment variables, for a description of each and common configuration patterns see our Installation Guide.

Using the AWS Marketplace container

The AWS Marketplace OPERATR container must be run with an IAM role that has the AWSMarketplaceMeteringRegisterUsage policy, regardless if you deploy to EKS, ECS, or elsewhere.

Deploying to ECS

We recommend deploying OPERATR to ECS as a FARGATE task with a minimum allocation of 2GB container memory.

Use our quick-start CloudFormation templates to deploy OPERATR to EC2 or Fargate in an ECS Cluster of your choosing.

The CloudFormation templates include the creation of an IAM role with AWSMarketplaceMeteringRegisterUsage and assigning that to the running task.

Deploying to EKS

OPERATR in EKS must be run with a Service Account that has the correct IAM role. Fine grained IAM roles for Service Accounts are available in EKS Clusters v1.14+.

The following steps guide you through a simple installation of OPERATR in EKS. See this article for further background reading.

1. Update KubeConfig for your cluster.

$ aws eks --region [EKS-REGION] update-kubeconfig --name [EKS-CLUSTER-NAME]

> Added new context arn:aws:eks:us-east-1:[YOUR-ACCOUNT-ID]:cluster/[EKS-CLUSTER-NAME] to /Users/you/.kube/config

2. Test your connectivity to the cluster.

$ kubectl get svc

> NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AG
> kubernetes ClusterIP 10.100.0.1 443/TCP 3h34m

3. Enable IAM Roles for Service Accounts on your cluster.

$ aws eks describe-cluster --region [EKS-REGION] --name [EKS-CLUSTER-NAME] --query "cluster.identity.oidc.issuer" --output text

> https://oidc.eks.us-east-1.amazonaws.com/id/086F0892931ED09F5D966F5353D1A18F

4. Create an OIDC identity provider in the IAM console, using the output above.

5. Create the Service Account IAM role with AWSMarketplaceMeteringRegisterUsage policy attached.

The attached policy should be AWSMarketplaceMeteringRegisterUsage::

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "aws-marketplace:RegisterUsage"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

The trust policy of your create role should look similar to:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::[YOUR-ACCOUNT-ID]:oidc-provider/[ISSUER-HOSTPATH]"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.us-east-1.amazonaws.com/id/086F0892931ED09F5D966F5353D1A18F:sub": "system:serviceaccount:default:operatr-service"
        }
      }
    }
  ]
}

6. Create Service Account YAML using the ARN of the IAM Role

apiVersion: v1
kind: ServiceAccount
metadata:
  name: operatr-service
  namespace: default
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::[YOUR-ACCOUNT-ID]:role/[YOUR-EKS-REGISTER-USAGE-ROLE]

7. Make the Service Account available for use in your cluster.

$ kubectl apply -f operatr-service-account.yaml

> serviceaccount/oprtr-service created

$ kubectl describe serviceaccounts

> Name:                oprtr-service
> Namespace:           default
> Labels:              
> Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::[YOUR-ACCOUNT]:role/[YOUR-ROLE]
>                      kubectl.kubernetes.io/last-applied-configuration:
>                        {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{"eks.amazonaws.com/role-arn":"arn:aws:iam::[YOUR-ACCOUNT]:role/OP-EKS-...
> Image pull secrets:  
> Mountable secrets:   oprtr-service-token-xkmwt
> Tokens:              oprtr-service-token-xkmwt
> Events:              

8. Create OPERATR Deployment YAML using the Service Account

For the full list of OPERATR configuration options, see our Installation Guide.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: operatr-io
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: operatr-io
  template:
    metadata:
      labels:
        app: operatr-io
    spec:
      serviceAccountName: operatr-service
      containers:
        - name: operatr-io
          image: [AWS-MARKETPLACE-CONTAINER-URL]
          ports:
            - containerPort: 3000
          env:
            - name: AWS_REGION
              value: "us-east-1"
            - name: BOOTSTRAP
              value: "YOUR BOOTSTRAP URL"
            - name: FURTHER_CONFIGURATION
              value: "YOUR FURTHER CONFIGURATION"
      securityContext:
        fsGroup: 1337

9. Deploy OPERATR to EKS!

$ kubectl create -f operatr-container.yaml

> deployment.apps/operatr-io created

$ kubectl describe pods

> Name:           operatr-io-7ff67bf946-n4hm2
> Namespace:      default

> kubectl logs operatr-io-7ff67bf946-n4hm2

...

You have now deployed OPERATR to EKS using a Service Account with an IAM Role and attached AWSMarketplaceMeteringRegisterUsage policy.

Get help!

If you need assistance configuring or deploying OPERATR, please contact [email protected].