Deploy the Instana-Agent-Operator Helm Chart on AWS EKS
Introduction
In this guide, we will deploy the Instana Agent Operator Helm chart on an AWS EKS cluster using Pulumi. The key services involved include AWS EKS for the Kubernetes cluster and Helm for managing the Instana Agent Operator deployment.
Step-by-Step Explanation
Step 1: Set Up AWS EKS Cluster
- Create a VPC: AWS EKS requires a VPC with subnets in at least two availability zones.
- Create an EKS Cluster: Set up an EKS cluster within the VPC.
- Create a Node Group: Add a managed node group to the EKS cluster.
Step 2: Deploy Instana Agent Operator Helm Chart
- Add Helm Repository: Add the Instana Helm repository to your Helm configuration.
- Deploy Helm Chart: Use the Helm provider in Pulumi to deploy the Instana Agent Operator Helm chart to the EKS cluster.
Summary
By following this guide, you will have successfully deployed the Instana Agent Operator on an AWS EKS cluster using Pulumi. This setup leverages AWS EKS for scalable Kubernetes management and Helm for streamlined application deployment.
Full Code Example
import * as awsx from "@pulumi/awsx";
import * as eks from "@pulumi/eks";
import * as k8s from "@pulumi/kubernetes";
// Create a VPC
const vpc = new awsx.ec2.Vpc("vpc", {
cidrBlock: "10.0.0.0/16",
numberOfAvailabilityZones: 2,
});
// Create an EKS cluster
const cluster = new eks.Cluster("eksCluster", {
vpcId: vpc.vpcId,
subnetIds: vpc.publicSubnetIds,
instanceType: "t3.medium",
desiredCapacity: 2,
minSize: 1,
maxSize: 3,
});
// Create a managed node group
const nodeGroup = new eks.ManagedNodeGroup("nodeGroup", {
cluster: cluster,
nodeGroupName: "instana-node-group",
nodeRoleArn: cluster.instanceRoles.apply(roles => roles[0].arn),
scalingConfig: {
desiredSize: 2,
minSize: 1,
maxSize: 3,
},
instanceTypes: ["t3.medium"],
});
// Deploy Instana Agent Operator Helm chart
const instanaAgent = new k8s.helm.v3.Release("instana-agent", {
chart: "agent-operator",
version: "1.0.0",
repositoryOpts: {
repo: "https://agents.instana.io/helm",
},
values: {},
namespace: "instana-agent",
}, { provider: cluster.provider });
export const vpcId = vpc.vpcId;
export const eksClusterName = cluster.eksCluster.name;
export const nodeGroupName = nodeGroup.nodeGroup.nodeGroupName;
export const helmReleaseName = instanaAgent.name;
Deploy this code
Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.
Sign upNew to Pulumi?
Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.
Sign upThank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.