Skip to content

Commit 6c0d2d4

Browse files
Merge pull request #54 from vaibhavsawhney/blobs-integration
Blobs integration
2 parents 58889a5 + 47050ba commit 6c0d2d4

8 files changed

Lines changed: 219 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ or
120120

121121
if you want to change blob's S3 region then use
122122
```
123-
HAYSTACK_PROP_AGENTS_BLOBS_DISPATCHERS_S3_REGION=someregion
123+
HAYSTACK_PROP_AGENTS_OSSBLOBS_DISPATCHERS_S3_REGION=someregion
124124
```
125125

126126
## Agent Providers

deployment/haystack-agent/main.tf

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
locals {
2+
app_name = "haystack-agent"
3+
deployment_yaml_file_path = "${path.module}/templates/deployment.yaml"
4+
count = "${var.haystack-agent["enabled"]?1:0}"
5+
config_file_path = "${path.module}/templates/haystack-agent.conf"
6+
checksum = "${sha1("${data.template_file.config_data.rendered}")}"
7+
configmap_name = "haystack-agent-${local.checksum}"
8+
}
9+
10+
resource "kubernetes_config_map" "haystack-config" {
11+
metadata {
12+
name = "${local.configmap_name}"
13+
namespace = "${var.namespace}"
14+
}
15+
data {
16+
"haystack-agent.conf" = "${data.template_file.config_data.rendered}"
17+
}
18+
count = "${local.count}"
19+
}
20+
21+
data "template_file" "config_data" {
22+
template = "${file("${local.config_file_path}")}"
23+
24+
vars {
25+
kafka_endpoint = "${var.kafka_hostname}:${var.kafka_port}"
26+
aws_bucket_name = "${var.haystack-agent["blobs_aws_bucket_name"]}"
27+
aws_region = "${var.haystack-agent["blobs_aws_region"]}"
28+
}
29+
}
30+
31+
data "template_file" "deployment_yaml" {
32+
template = "${file("${local.deployment_yaml_file_path}")}"
33+
34+
vars {
35+
app_name = "${local.app_name}"
36+
node_selecter_label = "${var.node_selector_label}"
37+
image = "expediadotcom/haystack-agent:${var.haystack-agent["version"]}"
38+
replicas = "${var.haystack-agent["instances"]}"
39+
enabled = "${var.haystack-agent["enabled"]}"
40+
cpu_limit = "${var.haystack-agent["cpu_limit"]}"
41+
cpu_request = "${var.haystack-agent["cpu_request"]}"
42+
memory_limit = "${var.haystack-agent["memory_limit"]}"
43+
memory_request = "${var.haystack-agent["memory_request"]}"
44+
jvm_memory_limit = "${var.haystack-agent["jvm_memory_limit"]}"
45+
kubectl_context_name = "${var.kubectl_context_name}"
46+
kubectl_executable_name = "${var.kubectl_executable_name}"
47+
namespace = "${var.namespace}"
48+
spans_service_port = "${var.spans_service_port}"
49+
blobs_service_port = "${var.blobs_service_port}"
50+
configmap_name = "${local.configmap_name}"
51+
graphite_port = "${var.graphite_port}"
52+
graphite_host = "${var.graphite_hostname}"
53+
graphite_enabled = "${var.graphite_enabled}"
54+
}
55+
}
56+
57+
resource "null_resource" "kubectl_apply" {
58+
triggers {
59+
template = "${data.template_file.deployment_yaml.rendered}"
60+
}
61+
provisioner "local-exec" {
62+
command = "echo '${data.template_file.deployment_yaml.rendered}' | ${var.kubectl_executable_name} apply -f - --context ${var.kubectl_context_name}"
63+
}
64+
count = "${local.count}"
65+
}
66+
67+
68+
resource "null_resource" "kubectl_destroy" {
69+
70+
provisioner "local-exec" {
71+
command = "echo '${data.template_file.deployment_yaml.rendered}' | ${var.kubectl_executable_name} delete -f - --context ${var.kubectl_context_name}"
72+
when = "destroy"
73+
}
74+
count = "${local.count}"
75+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# ------------------- Deployment ------------------- #
2+
3+
kind: Deployment
4+
apiVersion: apps/v1beta2
5+
metadata:
6+
labels:
7+
k8s-app: ${app_name}
8+
name: ${app_name}
9+
namespace: ${namespace}
10+
spec:
11+
replicas: ${replicas}
12+
revisionHistoryLimit: 10
13+
selector:
14+
matchLabels:
15+
k8s-app: ${app_name}
16+
template:
17+
metadata:
18+
labels:
19+
k8s-app: ${app_name}
20+
spec:
21+
containers:
22+
- name: ${app_name}
23+
image: ${image}
24+
volumeMounts:
25+
# Create on-disk volume to store exec logs
26+
- mountPath: /config
27+
name: config-volume
28+
resources:
29+
limits:
30+
cpu: ${cpu_limit}
31+
memory: ${memory_limit}Mi
32+
requests:
33+
cpu: ${cpu_request}
34+
memory: ${memory_request}Mi
35+
env:
36+
- name: "HAYSTACK_AGENT_CONFIG_FILE_PATH"
37+
value: "/config/haystack-agent.conf"
38+
- name: "HAYSTACK_GRAPHITE_HOST"
39+
value: "${graphite_host}"
40+
- name: "HAYSTACK_GRAPHITE_PORT"
41+
value: "${graphite_port}"
42+
- name: "HAYSTACK_GRAPHITE_ENABLED"
43+
value: "${graphite_enabled}"
44+
- name: "JAVA_XMS"
45+
value: "${jvm_memory_limit}m"
46+
- name: "JAVA_XMX"
47+
value: "${jvm_memory_limit}m"
48+
livenessProbe:
49+
exec:
50+
command:
51+
- /bin/grpc_health_probe
52+
- "-addr=:${blobs_service_port}"
53+
initialDelaySeconds: 30
54+
periodSeconds: 15
55+
failureThreshold: 3
56+
nodeSelector:
57+
${node_selecter_label}
58+
volumes:
59+
- name: config-volume
60+
configMap:
61+
name: ${configmap_name}
62+
63+
# ------------------- Service ------------------- #
64+
---
65+
apiVersion: v1
66+
kind: Service
67+
metadata:
68+
labels:
69+
k8s-app: ${app_name}
70+
name: ${app_name}
71+
namespace: ${namespace}
72+
spec:
73+
ports:
74+
- port: ${spans_service_port}
75+
targetPort: ${spans_service_port}
76+
selector:
77+
k8s-app: ${app_name}
78+
- port: ${blobs_service_port}
79+
targetPort: ${blobs_service_port}
80+
selector:
81+
k8s-app: ${app_name}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
agents {
2+
spans {
3+
enabled = true
4+
port = 35000
5+
dispatchers {
6+
kafka {
7+
bootstrap.servers = "${kafka_endpoint}"
8+
producer.topic = "proto-spans"
9+
buffer.memory = 1048576
10+
retries = 2
11+
}
12+
}
13+
}
14+
ossblobs {
15+
enabled = true
16+
port = 35001
17+
max.blob.size.in.kb = 512
18+
dispatchers {
19+
s3 {
20+
keep.alive = true
21+
max.outstanding.requests = 150
22+
should.wait.for.upload = false
23+
max.connections = 50
24+
retry.count = 1
25+
bucket.name = "${aws_bucket_name}"
26+
region = "${aws_region}"
27+
}
28+
}
29+
}
30+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
variable "kubectl_context_name" {}
2+
variable "kubectl_executable_name" {}
3+
variable "namespace" {}
4+
variable "node_selector_label"{}
5+
variable "kafka_hostname" {}
6+
variable "kafka_port" {}
7+
variable "graphite_hostname" {}
8+
variable "graphite_port" {}
9+
variable "graphite_enabled" {}
10+
11+
variable "haystack-agent" {
12+
type = "map"
13+
}
14+
15+
variable "aws_region" {
16+
default = "us-west-2"
17+
}
18+
19+
variable "spans_service_port" {
20+
default = 35000
21+
}
22+
23+
variable "blobs_service_port" {
24+
default = 35001
25+
}

docker/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ENV APP_HOME /app/bin
66

77
RUN mkdir -p ${APP_HOME}
88

9+
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
10+
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
11+
chmod +x /bin/grpc_health_probe
12+
913
COPY bundlers/haystack-agent/target/${APP_NAME}.jar ${APP_HOME}/
1014

1115
COPY docker/default.conf ${APP_HOME}/

docker/default.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ agents {
1919
s3 {
2020
keep.alive = true
2121
max.outstanding.requests = 150
22-
should.wait.for.upload = true
22+
should.wait.for.upload = false
2323
max.connections = 50
2424
retry.count = 1
2525
bucket.name = "haystack-blobs"
@@ -51,4 +51,4 @@ agents {
5151
}
5252
}
5353
}
54-
}
54+
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<metrics-core.version>3.2.5</metrics-core.version>
7878
<jaxb.version>2.3.0</jaxb.version>
7979
<javax.activation.version>1.1.1</javax.activation.version>
80-
<blobs.version>1.0.1</blobs.version>
80+
<blobs.version>1.0.2</blobs.version>
8181

8282
<jetty.version>9.4.18.v20190429</jetty.version>
8383
<zipkin2.version>2.15.0</zipkin2.version>

0 commit comments

Comments
 (0)