first commit
commit
123a9e79ad
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Local .terraform directories
|
||||||
|
**/.terraform/*
|
||||||
|
|
||||||
|
# .tfstate files
|
||||||
|
*.tfstate
|
||||||
|
*.tfstate.*
|
||||||
|
*.tfplan
|
||||||
|
|
||||||
|
# Crash log files
|
||||||
|
crash.log
|
||||||
|
|
||||||
|
# Exclude all .tfvars files, which are likely to contain sentitive data, such as
|
||||||
|
# password, private keys, and other secrets. These should not be part of version
|
||||||
|
# control as they are data points which are potentially sensitive and subject
|
||||||
|
# to change depending on the environment.
|
||||||
|
*.tfvars
|
||||||
|
|
||||||
|
# Ignore override files as they are usually used to override resources locally and so
|
||||||
|
# are not checked in
|
||||||
|
override.tf
|
||||||
|
override.tf.json
|
||||||
|
*_override.tf
|
||||||
|
*_override.tf.json
|
||||||
|
|
||||||
|
# Ignore CLI configuration files
|
||||||
|
.terraformrc
|
||||||
|
terraform.rc
|
||||||
|
|
||||||
|
.env
|
||||||
|
|
||||||
|
venv
|
||||||
|
|
||||||
|
.helm
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/aws" {
|
||||||
|
version = "5.7.0"
|
||||||
|
constraints = "~> 5.7.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:SReCEKB29vK0duwz7Pk2bSCa2M2BqvtlFwS9Bqs3ADw=",
|
||||||
|
"zh:03240d7fc041d5331db7fd5f2ca4fe031321d07d2a6ca27085c5020dae13f211",
|
||||||
|
"zh:0b5252b14c354636fe0348823195dd901b457de1a033015f4a7d11cfe998c766",
|
||||||
|
"zh:2bfb62325b0487be8d1850a964f09cca0d45148faec577459c2a24334ec9977b",
|
||||||
|
"zh:2f9e317ffc57d2b5117cfe8dc266f88aa139b760bc93d8adeed7ad533a78b5a3",
|
||||||
|
"zh:36512725c9d7c559927b98fead04be58494a3a997e5270b905a75a468e307427",
|
||||||
|
"zh:5483e696d3ea764f746d3fe439f7dcc49001c3c774122d7baa51ce01011f0075",
|
||||||
|
"zh:5967635cc14f969ea26622863a2e3f9d6a7ddd3e7d35a29a7275c5e10579ac8c",
|
||||||
|
"zh:7e63c94a64af5b7aeb36ea6e3719962f65a7c28074532c02549a67212d410bb8",
|
||||||
|
"zh:8a7d5f33b11a3f5c7281413b431fa85de149ed8493ec1eea73d50d2d80a475e6",
|
||||||
|
"zh:8e2ed2d986aaf590975a79a2f6b5e60e0dc7d804ab01a8c03ab181e41cfe9b0f",
|
||||||
|
"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
|
||||||
|
"zh:9c7b8ca1b17489f16a6d0f1fc2aa9c130978ea74c9c861d8435410567a0a888f",
|
||||||
|
"zh:a54385896a70524063f0c5420be26ff6f88909bd8e6902dd3e922577b21fd546",
|
||||||
|
"zh:aecd3a8fb70b938b58d93459bfb311540fd6aaf981924bf34abd48f953b4be0d",
|
||||||
|
"zh:f3de076fa3402768d27af0187c6a677777b47691d1f0f84c9b259ff66e65953e",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/external" {
|
||||||
|
version = "2.3.1"
|
||||||
|
hashes = [
|
||||||
|
"h1:0/VG+zmBcGhAof8g5k9R7HYyotYs6KPqnQKnz6XBiAg=",
|
||||||
|
"zh:001e2886dc81fc98cf17cf34c0d53cb2dae1e869464792576e11b0f34ee92f54",
|
||||||
|
"zh:2eeac58dd75b1abdf91945ac4284c9ccb2bfb17fa9bdb5f5d408148ff553b3ee",
|
||||||
|
"zh:2fc39079ba61411a737df2908942e6970cb67ed2f4fb19090cd44ce2082903dd",
|
||||||
|
"zh:472a71c624952cff7aa98a7b967f6c7bb53153dbd2b8f356ceb286e6743bb4e2",
|
||||||
|
"zh:4cff06d31272aac8bc35e9b7faec42cf4554cbcbae1092eaab6ab7f643c215d9",
|
||||||
|
"zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
|
||||||
|
"zh:7ed16ccd2049fa089616b98c0bd57219f407958f318f3c697843e2397ddf70df",
|
||||||
|
"zh:842696362c92bf2645eb85c739410fd51376be6c488733efae44f4ce688da50e",
|
||||||
|
"zh:8985129f2eccfd7f1841ce06f3bf2bbede6352ec9e9f926fbaa6b1a05313b326",
|
||||||
|
"zh:a5f0602d8ec991a5411ef42f872aa90f6347e93886ce67905c53cfea37278e05",
|
||||||
|
"zh:bf4ab82cbe5256dcef16949973bf6aa1a98c2c73a98d6a44ee7bc40809d002b8",
|
||||||
|
"zh:e70770be62aa70198fa899526d671643ff99eecf265bf1a50e798fc3480bd417",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/helm" {
|
||||||
|
version = "2.11.0"
|
||||||
|
constraints = "2.11.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:l+2Ni3UyoFRxyvxRblPQQYck1/iFmZKFy/UcI3ZRtjg=",
|
||||||
|
"zh:013857c88f3e19a4b162344e21dc51891c4ac8b600da8391f7fb2b6d234961e1",
|
||||||
|
"zh:044fffa233a93cdcf8384afbe9e1ab6c9d0b5b176cbae56ff465eb9611302975",
|
||||||
|
"zh:208b7cdd4fa3a1b25ae817dc00a9198ef98be0ddc3a577b5b72bc0f006afb997",
|
||||||
|
"zh:3e8b33f56cfe387277572a92037a1ca1cbe4e3aa6b5c19a8c2431193b07f7865",
|
||||||
|
"zh:7dd663d5619bd71676899b05b19d36f585189fdabc6b0b03c23579524a8fd9bf",
|
||||||
|
"zh:ae5329cb3e5bf0b86b02e823aac3ef3bd0d4b1618ff013cd0076dca0be8322e4",
|
||||||
|
"zh:ba6201695b55d51bedacdb017cb8d03d7a8ada51d0168ac44fef3fa791a85ab4",
|
||||||
|
"zh:c61285c8b1ba10f50cf94c9dcf98f2f3b720f14906a18be71b9b422279b5d806",
|
||||||
|
"zh:d522d388246f38b9f329c511ec579b516d212670b954f9dab64efb27e51862af",
|
||||||
|
"zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
|
||||||
|
"zh:f92546e26b670da61437ae2cbd038427c9374ce5f7a78df52193397da90bd997",
|
||||||
|
"zh:f9ad1407e5c0d5e3474094491025bf100828e8c1a01acdf9591d7dd1eb59f961",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/kubernetes" {
|
||||||
|
version = "2.23.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:S0dS3oy5c6ma2JUzpbtO45wb5iSCJdFFiUDf/t99tws=",
|
||||||
|
"zh:10488a12525ed674359585f83e3ee5e74818b5c98e033798351678b21b2f7d89",
|
||||||
|
"zh:1102ba5ca1a595f880e67102bbf999cc8b60203272a078a5b1e896d173f3f34b",
|
||||||
|
"zh:1347cf958ed3f3f80b3c7b3e23ddda3d6c6573a81847a8ee92b7df231c238bf6",
|
||||||
|
"zh:2cb18e9f5156bc1b1ee6bc580a709f7c2737d142722948f4a6c3c8efe757fa8d",
|
||||||
|
"zh:5506aa6f28dcca2a265ccf8e34478b5ec2cb43b867fe6d93b0158f01590fdadd",
|
||||||
|
"zh:6217a20686b631b1dcb448ee4bc795747ebc61b56fbe97a1ad51f375ebb0d996",
|
||||||
|
"zh:8accf916c00579c22806cb771e8909b349ffb7eb29d9c5468d0a3f3166c7a84a",
|
||||||
|
"zh:9379b0b54a0fa030b19c7b9356708ec8489e194c3b5e978df2d31368563308e5",
|
||||||
|
"zh:aa99c580890691036c2931841e88e7ee80d59ae52289c8c2c28ea0ac23e31520",
|
||||||
|
"zh:c57376d169875990ac68664d227fb69cd0037b92d0eba6921d757c3fd1879080",
|
||||||
|
"zh:e6068e3f94f6943b5586557b73f109debe19d1a75ca9273a681d22d1ce066579",
|
||||||
|
"zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"namespace":"keptn","name":"bridge-credentials","key":"BASIC_AUTH_USERNAME","context":"arn:aws:eks:us-west-2:277980527364:cluster/xOps"}
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
resource "helm_release" "dynatrace-service" {
|
||||||
|
name = "dynatrace-service"
|
||||||
|
chart = "./dynatrace-service"
|
||||||
|
namespace = var.KEPTN_NAMESPACE
|
||||||
|
timeout = 500
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].key"
|
||||||
|
value = "dedicated"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].value"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].operator"
|
||||||
|
value = "Equal"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].effect"
|
||||||
|
value = "NoSchedule"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "nodeSelector.role"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "dynatraceService.config.keptnApiUrl"
|
||||||
|
value = "https://keptn.nttdata-xlabs.com/api"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "dynatraceService.config.keptnBridgeUrl"
|
||||||
|
value = "https://keptn.nttdata-xlabs.com/bridge"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "dynatraceService.config.logLevel"
|
||||||
|
value = "debug"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# resource "null_resource" "kubectl" {
|
||||||
|
# provisioner "local-exec" {
|
||||||
|
# command = "kubectl -n keptn get secret bridge-credentials -o jsonpath={.data.BASIC_AUTH_USERNAME}"
|
||||||
|
# # interpreter = ["/bin/bash", "-c"]environment = {
|
||||||
|
# # KUBECONFIG = base64encode(var.kubeconfig)
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# resource "kubernetes_secret" "bridge" {
|
||||||
|
# metadata {
|
||||||
|
# name = "bridge-credentials"
|
||||||
|
# namespace = "keptn"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# output "bridge" {
|
||||||
|
# value = kubernetes_secret.bridge.data.BASIC_AUTH_USERNAME
|
||||||
|
# }
|
||||||
|
|
||||||
|
resource "kubernetes_secret" "dynatrace-service" {
|
||||||
|
metadata {
|
||||||
|
name = "dynatrace-service"
|
||||||
|
namespace=var.KEPTN_NAMESPACE
|
||||||
|
labels = {
|
||||||
|
"app.kubernetes.io/scope"="dynatrace-service"
|
||||||
|
}
|
||||||
|
#scope="dynatrace-service"
|
||||||
|
}
|
||||||
|
|
||||||
|
data = {
|
||||||
|
DT_API_TOKEN = var.DT_API_TOKEN
|
||||||
|
DT_TENANT = var.DT_TENANT
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 0.27.1
|
||||||
|
description: Helm Chart for the keptn-contrib dynatrace-service
|
||||||
|
name: dynatrace-service
|
||||||
|
type: application
|
||||||
|
version: 0.27.1
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
Dynatrace-service
|
||||||
|
===========
|
||||||
|
|
||||||
|
Helm Chart for the *keptn-contrib* *dynatrace-service*
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The following table lists the configurable parameters of the *dynatrace-service* chart and their default values.
|
||||||
|
|
||||||
|
| Parameter | Description | Default |
|
||||||
|
| ------------------------ | ----------------------- | -------------- |
|
||||||
|
| `dynatraceService.image.repository` | Container image name | `"docker.io/keptncontrib/dynatrace-service"` |
|
||||||
|
| `dynatraceService.image.pullPolicy` | Kubernetes image pull policy | `"IfNotPresent"` |
|
||||||
|
| `dynatraceService.image.tag` | Container tag | `""` |
|
||||||
|
| `dynatraceService.service.enabled` | Creates a kubernetes service for the *dynatrace-service* | `true` |
|
||||||
|
| `dynatraceService.config.generateTaggingRules` | Generate Tagging Rules in Dynatrace Tenant | `false` |
|
||||||
|
| `dynatraceService.config.generateProblemNotifications` | Generate Problem Notifications in Dynatrace Tenant | `false` |
|
||||||
|
| `dynatraceService.config.generateManagementZones` | Generate Management Zones in Dynatrace Tenant | `false` |
|
||||||
|
| `dynatraceService.config.generateDashboards` | Generate Dashboards in Dynatrace Tenant | `false` |
|
||||||
|
| `dynatraceService.config.generateMetricEvents` | Generate Metric Events in Dynatrace Tenant | `false` |
|
||||||
|
| `dynatraceService.config.synchronizeDynatraceServices` | Synchronize Service Entities between Dynatrace and Keptn | `true` |
|
||||||
|
| `dynatraceService.config.synchronizeDynatraceServicesIntervalSeconds` | Synchronization Interval | `300` |
|
||||||
|
| `dynatraceService.config.httpSSLVerify` | Verify HTTPS SSL certificates | `true` |
|
||||||
|
| `dynatraceService.config.httpProxy` | Proxy for HTTP requests | `""` |
|
||||||
|
| `dynatraceService.config.httpsProxy` | Proxy for HTTPS requests | `""` |
|
||||||
|
| `dynatraceService.config.noProxy` | Proxy exceptions for HTTP and HTTPS requests | `""` |
|
||||||
|
| `dynatraceService.config.logLevel`| Minimum log level to log | `info` |
|
||||||
|
| `imagePullSecrets` | Secrets to use for container registry credentials | `[]` |
|
||||||
|
| `serviceAccount.create` | Enables the service account creation | `true` |
|
||||||
|
| `serviceAccount.annotations` | Annotations to add to the service account | `{}` |
|
||||||
|
| `podAnnotations` | Annotations to add to the created pods | `{}` |
|
||||||
|
| `podSecurityContext` | Set the pod security context (e.g. `fsgroups`) | `{}` |
|
||||||
|
| `securityContext` | Set the security context (e.g. `runasuser`) | `{}` |
|
||||||
|
| `resources` | Resource limits and requests | `{}` |
|
||||||
|
| `nodeSelector` | Node selector configuration | `{}` |
|
||||||
|
| `tolerations` | Tolerations for the pods | `[]` |
|
||||||
|
| `affinity` | Affinity rules | `{}` |
|
||||||
|
| `terminationGracePeriodSeconds` | Termination grace period (in seconds) | `30` |
|
||||||
|
| `workGracePeriodSeconds` | Seconds allocated to completing work in the event of a graceful shutdown | `20` |
|
||||||
|
| `replyGracePeriodSeconds` | Seconds allocated to replying in the event of a graceful shutdown | `5` |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "dynatrace-service.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "dynatrace-service.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "dynatrace-service.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "dynatrace-service.labels" -}}
|
||||||
|
dynatrace-sli.sh/chart: {{ include "dynatrace-service.chart" . }}
|
||||||
|
{{ include "dynatrace-service.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "dynatrace-service.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "dynatrace-service.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "dynatrace-service.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "dynatrace-service.labels" . | nindent 4 }}
|
||||||
|
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "dynatrace-service.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "dynatrace-service.labels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: dynatrace-service
|
||||||
|
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: dynatrace-service
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
{{- if .Values.image }}
|
||||||
|
image: {{ .Values.image }} # use image from .Values.image (e.g., when starting via skaffold)
|
||||||
|
{{- else }}
|
||||||
|
image: "{{ .Values.dynatraceService.image.repository }}:{{ .Values.dynatraceService.image.tag | default .Chart.AppVersion }}"
|
||||||
|
{{ end }}
|
||||||
|
imagePullPolicy: {{ .Values.dynatraceService.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
env:
|
||||||
|
- name: DATASTORE
|
||||||
|
value: ''
|
||||||
|
- name: RESOURCE_SERVICE
|
||||||
|
value: ''
|
||||||
|
- name: SHIPYARD_CONTROLLER
|
||||||
|
value: ''
|
||||||
|
- name: K8S_DEPLOYMENT_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: 'metadata.labels[''app.kubernetes.io/name'']'
|
||||||
|
- name: K8S_DEPLOYMENT_VERSION
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: 'metadata.labels[''app.kubernetes.io/version'']'
|
||||||
|
- name: K8S_DEPLOYMENT_COMPONENT
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: 'metadata.labels[''app.kubernetes.io/component'']'
|
||||||
|
- name: K8S_NAMESPACE
|
||||||
|
{{- if .Values.distributor.metadata.namespace }}
|
||||||
|
value: {{ .Values.distributor.metadata.namespace }}
|
||||||
|
{{- else }}
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
{{- end }}
|
||||||
|
- name: K8S_NODE_NAME
|
||||||
|
{{- if .Values.distributor.metadata.hostname }}
|
||||||
|
value: {{ .Values.distributor.metadata.hostname }}
|
||||||
|
{{- else }}
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
{{- end }}
|
||||||
|
- name: K8S_POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
- name: GENERATE_TAGGING_RULES
|
||||||
|
value: '{{ .Values.dynatraceService.config.generateTaggingRules }}'
|
||||||
|
- name: GENERATE_PROBLEM_NOTIFICATIONS
|
||||||
|
value: '{{ .Values.dynatraceService.config.generateProblemNotifications }}'
|
||||||
|
- name: GENERATE_MANAGEMENT_ZONES
|
||||||
|
value: '{{ .Values.dynatraceService.config.generateManagementZones }}'
|
||||||
|
- name: GENERATE_DASHBOARDS
|
||||||
|
value: '{{ .Values.dynatraceService.config.generateDashboards }}'
|
||||||
|
- name: GENERATE_METRIC_EVENTS
|
||||||
|
value: '{{ .Values.dynatraceService.config.generateMetricEvents }}'
|
||||||
|
- name: SYNCHRONIZE_DYNATRACE_SERVICES
|
||||||
|
value: '{{ .Values.dynatraceService.config.synchronizeDynatraceServices }}'
|
||||||
|
- name: SYNCHRONIZE_DYNATRACE_SERVICES_INTERVAL_SECONDS
|
||||||
|
value: '{{ .Values.dynatraceService.config.synchronizeDynatraceServicesIntervalSeconds }}'
|
||||||
|
- name: HTTP_SSL_VERIFY
|
||||||
|
value: '{{ .Values.dynatraceService.config.httpSSLVerify }}'
|
||||||
|
- name: HTTP_PROXY
|
||||||
|
value: '{{ .Values.dynatraceService.config.httpProxy }}'
|
||||||
|
- name: HTTPS_PROXY
|
||||||
|
value: '{{ .Values.dynatraceService.config.httpsProxy }}'
|
||||||
|
- name: NO_PROXY
|
||||||
|
value: '{{ .Values.dynatraceService.config.noProxy }}'
|
||||||
|
- name: LOG_LEVEL_DYNATRACE_SERVICE
|
||||||
|
value: '{{ .Values.dynatraceService.config.logLevel }}'
|
||||||
|
- name: KEPTN_API_URL
|
||||||
|
value: '{{ .Values.dynatraceService.config.keptnApiUrl }}'
|
||||||
|
- name: KEPTN_BRIDGE_URL
|
||||||
|
value: '{{ .Values.dynatraceService.config.keptnBridgeUrl }}'
|
||||||
|
- name: KEPTN_API_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: keptn-api-token
|
||||||
|
key: keptn-api-token
|
||||||
|
- name: WORK_GRACE_PERIOD_SECONDS
|
||||||
|
value: '{{ .Values.workGracePeriodSeconds }}'
|
||||||
|
- name: REPLY_GRACE_PERIOD_SECONDS
|
||||||
|
value: '{{ .Values.replyGracePeriodSeconds }}'
|
||||||
|
- name: SKIP_LOWERCASE_SLI_NAMES
|
||||||
|
value: '{{ .Values.dynatraceService.config.skipLowercaseSLINames | default false }}'
|
||||||
|
- name: SKIP_INCLUDE_SLO_DISPLAY_NAMES
|
||||||
|
value: '{{ .Values.dynatraceService.config.skipIncludeSLODisplayNames | default false }}'
|
||||||
|
- name: SKIP_CHECK_DUPLICATE_SLI_AND_DISPLAY_NAMES
|
||||||
|
value: '{{ .Values.dynatraceService.config.skipCheckDuplicateSLIAndDisplayNames | default false }}'
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 8070
|
||||||
|
initialDelaySeconds: 0
|
||||||
|
periodSeconds: 5
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ready
|
||||||
|
port: 8080
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{{- if .Values.dynatraceService.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "dynatrace-service.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "dynatrace-service.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
{{- include "dynatrace-service.selectorLabels" . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: dynatrace-service
|
||||||
|
labels:
|
||||||
|
{{- include "dynatrace-service.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema",
|
||||||
|
"properties": {
|
||||||
|
"dynatraceService": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"image"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"image": {
|
||||||
|
"properties": {
|
||||||
|
"repository": {
|
||||||
|
"pattern": "^[a-z0-9][a-z0-9-./]{0,511}$"
|
||||||
|
},
|
||||||
|
"pullPolicy": {
|
||||||
|
"enum": [
|
||||||
|
"IfNotPresent",
|
||||||
|
"Always"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"properties": {
|
||||||
|
"generateTaggingRules": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"generateProblemNotifications": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"generateManagementZones": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"generateDashboards": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"generateMetricEvents": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"synchronizeDynatraceServices": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"synchronizeDynatraceServicesIntervalSeconds": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"httpSSLVerify": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"httpProxy": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"httpsProxy": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"noProxy": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"logLevel": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"terminationGracePeriodSeconds": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"workGracePeriodSeconds": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"replyGracePeriodSeconds": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
dynatraceService:
|
||||||
|
image:
|
||||||
|
repository: docker.io/keptncontrib/dynatrace-service # Container Image Name
|
||||||
|
pullPolicy: IfNotPresent # Kubernetes Image Pull Policy
|
||||||
|
tag: "" # Container Tag
|
||||||
|
service:
|
||||||
|
enabled: true # Creates a Kubernetes Service for the dynatrace-service
|
||||||
|
config:
|
||||||
|
generateTaggingRules: true # Generate Tagging Rules in Dynatrace Tenant
|
||||||
|
generateProblemNotifications: true # Generate Problem Notifications in Dynatrace Tenant
|
||||||
|
generateManagementZones: true # Generate Management Zones in Dynatrace Tenant
|
||||||
|
generateDashboards: true # Generate Dashboards in Dynatrace Tenant
|
||||||
|
generateMetricEvents: true # Generate Metric Events in Dynatrace Tenant
|
||||||
|
synchronizeDynatraceServices: true # Synchronize Service Entities between Dynatrace and Keptn
|
||||||
|
synchronizeDynatraceServicesIntervalSeconds: 60 # Synchronization Interval
|
||||||
|
httpSSLVerify: true # Verify HTTPS SSL certificates
|
||||||
|
httpProxy: "" # Proxy for HTTP requests
|
||||||
|
httpsProxy: "" # Proxy for HTTPS requests
|
||||||
|
noProxy: "" # Proxy exceptions for HTTP and HTTPS requests
|
||||||
|
logLevel: "info" # Minimum log level to log
|
||||||
|
keptnApiUrl: "" # URL of keptn API
|
||||||
|
keptnBridgeUrl: "" # URL of keptn bridge
|
||||||
|
skipLowercaseSLINames: false # Skip to apply a lower-case operation on SLI names
|
||||||
|
skipIncludeSLODisplayNames: false # Skip to include display names for SLO files produced by dynatrace-service
|
||||||
|
skipCheckDuplicateSLIAndDisplayNames: false # Skip check for duplicate SLI and display names in dashboard use-case
|
||||||
|
|
||||||
|
imagePullSecrets: [ ] # Secrets to use for container registry credentials
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
create: true # Enables the service account creation
|
||||||
|
annotations: { } # Annotations to add to the service account
|
||||||
|
|
||||||
|
podAnnotations: { } # Annotations to add to the created pods
|
||||||
|
|
||||||
|
podSecurityContext: # Set the pod security context (e.g. fsGroups)
|
||||||
|
fsGroup: 65532
|
||||||
|
|
||||||
|
securityContext: # Set the security context (e.g. runAsUser)
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65532
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
|
||||||
|
distributor:
|
||||||
|
metadata:
|
||||||
|
hostname: "" # Sets the hostname sent by the distributor to the control-plane
|
||||||
|
namespace: "" # Sets the namespace sent by the distributor to the control-plane
|
||||||
|
|
||||||
|
resources: # Set resources limits and requests
|
||||||
|
limits:
|
||||||
|
cpu: 128m
|
||||||
|
memory: 200Mi
|
||||||
|
requests:
|
||||||
|
cpu: 32m
|
||||||
|
memory: 50Mi
|
||||||
|
|
||||||
|
nodeSelector: { } # Node selector configuration
|
||||||
|
|
||||||
|
tolerations: [ ] # Tolerations for the pods
|
||||||
|
|
||||||
|
affinity: { } # Affinity rules
|
||||||
|
|
||||||
|
terminationGracePeriodSeconds: 30 # Pod termination grace period in seconds
|
||||||
|
workGracePeriodSeconds: 20 # Seconds allocated to completing work in the event of a graceful shutdown
|
||||||
|
replyGracePeriodSeconds: 5 # Seconds allocated to replying in the event of a graceful shutdown
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
label 'terraform-slave'
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
TF_VAR_KEPTN_NAMESPACE="keptn"
|
||||||
|
TF_VAR_KEPTN_VERSION="1.4.0"
|
||||||
|
TF_VAR_KEPTN_DOMAIN="keptn.nttdata-xlabs.com"
|
||||||
|
TF_VAR_DT_TENANT="https://elw69065.live.dynatrace.com"
|
||||||
|
TF_VAR_DT_API_TOKEN="dt0c01.N2PBLK767N76X77W4DKPZBW3.RPIRL6HTSX6OOPFB4REGWBQEN62LYYVYYR3O5VAWGFW37OVXKB4G6ZQUHPL33LMP"
|
||||||
|
}
|
||||||
|
|
||||||
|
// parameters {
|
||||||
|
// booleanParam(name: 'refresh', defaultValue: false, description: 'Refresh pipeline properties')
|
||||||
|
// }
|
||||||
|
|
||||||
|
stages {
|
||||||
|
// stage('Refresh properties') {
|
||||||
|
// steps {
|
||||||
|
// script {
|
||||||
|
// if (Refresh) {
|
||||||
|
// currentBuild.result = 'ABORTED'
|
||||||
|
// error('Stopping early…')
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
stage('TF Plan') {
|
||||||
|
steps {
|
||||||
|
container('terraform') {
|
||||||
|
withCredentials([[
|
||||||
|
$class: 'AmazonWebServicesCredentialsBinding',
|
||||||
|
credentialsId: "f89b3f7d-23ec-42b9-9687-e4acf01d7507",
|
||||||
|
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
|
||||||
|
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
|
||||||
|
sh 'terraform version'
|
||||||
|
sh 'terraform init -backend-config="key=keptn-demo"'
|
||||||
|
sh 'terraform get'
|
||||||
|
sh 'terraform apply -auto-approve'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
resource "helm_release" "job-executer-service" {
|
||||||
|
name = "job-executer-service"
|
||||||
|
chart = "https://github.com/keptn-contrib/job-executor-service/releases/download/0.3.0/job-executor-service-0.3.0.tgz"
|
||||||
|
namespace = var.KEPTN_NAMESPACE
|
||||||
|
timeout = 500
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].key"
|
||||||
|
value = "dedicated"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].value"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].operator"
|
||||||
|
value = "Equal"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].effect"
|
||||||
|
value = "NoSchedule"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "nodeSelector.role"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "remoteControlPlane.api.hostname"
|
||||||
|
value = "api-gateway-nginx.keptn"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "remoteControlPlane.api.token"
|
||||||
|
value = module.keptn-api-token.result
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "remoteControlPlane.topicSubscription"
|
||||||
|
value = "sh.keptn.event.deployment.triggered\\,sh.keptn.event.test.triggered\\,sh.keptn.event.action.triggered"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn,
|
||||||
|
module.keptn-api-token
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
resource "helm_release" "keptn" {
|
||||||
|
name = "keptn"
|
||||||
|
repository = "https://charts.keptn.sh"
|
||||||
|
chart = "keptn"
|
||||||
|
namespace = var.KEPTN_NAMESPACE
|
||||||
|
timeout = 500
|
||||||
|
version = var.KEPTN_VERSION
|
||||||
|
create_namespace = true
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].key"
|
||||||
|
value = "dedicated"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].value"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].operator"
|
||||||
|
value = "Equal"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "tolerations[0].effect"
|
||||||
|
value = "NoSchedule"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "nodeSelector.role"
|
||||||
|
value = "group2"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set {
|
||||||
|
name ="ingress.enabled"
|
||||||
|
value = "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name ="ingress.className"
|
||||||
|
value = "nginx"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name ="ingress.path"
|
||||||
|
value = "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name ="ingress.host"
|
||||||
|
value = var.KEPTN_DOMAIN
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name ="ingress.annotations.cert-manager\\.io/cluster-issuer"
|
||||||
|
value ="letsencrypt-prod"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "ingress.tls[0].hosts[0]"
|
||||||
|
value = var.KEPTN_DOMAIN
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "ingress.tls[0].secretName"
|
||||||
|
value = "letsencrypt-prod"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module "keptn-bridge-userneame" {
|
||||||
|
source = "./terraform-kubernetes-get-secret"
|
||||||
|
namespace = "keptn"
|
||||||
|
name = "bridge-credentials"
|
||||||
|
key = "BASIC_AUTH_USERNAME"
|
||||||
|
context = var.k8S_CONTEXT
|
||||||
|
#context = "arn:aws:eks:us-west-2:277980527364:cluster/xOps"
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module "keptn-bridge-pwd" {
|
||||||
|
source = "./terraform-kubernetes-get-secret"
|
||||||
|
namespace = "keptn"
|
||||||
|
name = "bridge-credentials"
|
||||||
|
key = "BASIC_AUTH_PASSWORD"
|
||||||
|
context = var.k8S_CONTEXT
|
||||||
|
#context = "arn:aws:eks:us-west-2:277980527364:cluster/xOps"
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module "keptn-api-token" {
|
||||||
|
source = "./terraform-kubernetes-get-secret"
|
||||||
|
namespace = "keptn"
|
||||||
|
name = "keptn-api-token"
|
||||||
|
key = "keptn-api-token"
|
||||||
|
context = var.k8S_CONTEXT
|
||||||
|
#context = "arn:aws:eks:us-west-2:277980527364:cluster/xOps"
|
||||||
|
|
||||||
|
depends_on = [
|
||||||
|
helm_release.keptn
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
output "Keptn_Bridge_Url" {
|
||||||
|
value = format("https://%s",var.KEPTN_DOMAIN)
|
||||||
|
}
|
||||||
|
|
||||||
|
output "Keptn_Bridge_USER" {
|
||||||
|
value = module.keptn-bridge-userneame.result
|
||||||
|
}
|
||||||
|
|
||||||
|
output "Keptn_Bridge_PWD" {
|
||||||
|
value = module.keptn-bridge-pwd.result
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Copyright (c) HashiCorp, Inc.
|
||||||
|
# SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
|
data "aws_eks_cluster" "xOps" {
|
||||||
|
name = var.CLUSTER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
data "aws_eks_cluster_auth" "example" {
|
||||||
|
name = var.CLUSTER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
|
||||||
|
backend "s3" {
|
||||||
|
bucket = "terraform-xops-demos"
|
||||||
|
#key = var.DEMO_NAME
|
||||||
|
region = "us-west-2"
|
||||||
|
dynamodb_table = "terraform-xops-lock-state"
|
||||||
|
encrypt = true
|
||||||
|
}
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = "~> 5.7.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
helm = {
|
||||||
|
version = "2.11.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
kubernetes = {
|
||||||
|
source = "hashicorp/kubernetes"
|
||||||
|
version = ">= 2.0.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
# kubectl = {
|
||||||
|
# source = "gavinbunney/kubectl"
|
||||||
|
# version = ">= 1.7.0"
|
||||||
|
# }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required_version = "~> 1.3"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
region = "us-west-2"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
provider "helm" {
|
||||||
|
repository_config_path = "${path.module}/.helm/repositories.yaml"
|
||||||
|
repository_cache = "${path.module}/.helm"
|
||||||
|
kubernetes {
|
||||||
|
host = data.aws_eks_cluster.xOps.endpoint
|
||||||
|
cluster_ca_certificate = base64decode(data.aws_eks_cluster.xOps.certificate_authority[0].data)
|
||||||
|
token = data.aws_eks_cluster_auth.example.token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "kubernetes" {
|
||||||
|
# kubernetes {
|
||||||
|
host = data.aws_eks_cluster.xOps.endpoint
|
||||||
|
cluster_ca_certificate = base64decode(data.aws_eks_cluster.xOps.certificate_authority[0].data)
|
||||||
|
token = data.aws_eks_cluster_auth.example.token
|
||||||
|
# }
|
||||||
|
}
|
||||||
|
|
||||||
|
# provider "kubectl" {
|
||||||
|
# kubernetes {
|
||||||
|
# host = data.aws_eks_cluster.xOps.endpoint
|
||||||
|
# cluster_ca_certificate = base64decode(data.aws_eks_cluster.xOps.certificate_authority[0].data)
|
||||||
|
# token = data.aws_eks_cluster_auth.example.token
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
Acquiring state lock. This may take a few moments...
|
||||||
|
[0m[1mmodule.keptn-bridge-userneame.data.external.secret-win[0]: Reading...[0m[0m
|
||||||
|
[0m[1mdata.aws_eks_cluster_auth.example: Reading...[0m[0m
|
||||||
|
[0m[1mdata.aws_eks_cluster_auth.example: Read complete after 0s [id=xOps][0m
|
||||||
|
[0m[1mdata.aws_eks_cluster.xOps: Reading...[0m[0m
|
||||||
|
[0m[1mmodule.keptn-bridge-userneame.data.external.secret-win[0]: Still reading... [10s elapsed][0m[0m
|
||||||
|
[0m[1mdata.aws_eks_cluster.xOps: Read complete after 1s [id=xOps][0m
|
||||||
|
[0m[1mhelm_release.keptn: Refreshing state... [id=keptn][0m
|
||||||
|
[0m[1mkubernetes_secret.dynatrace-service: Refreshing state... [id=keptn/dynatrace-service][0m
|
||||||
|
[0m[1mhelm_release.dynatrace-service: Refreshing state... [id=dynatrace-service][0m
|
||||||
|
|
||||||
|
[0m[1m[31mPlanning failed.[0m[1m Terraform encountered an error while generating this plan.[0m
|
||||||
|
|
||||||
|
[0mReleasing state lock. This may take a few moments...
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
variable "KEPTN_VERSION" {
|
||||||
|
type = string
|
||||||
|
description = "Version Keptn"
|
||||||
|
default = "1.4.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "KEPTN_NAMESPACE" {
|
||||||
|
type = string
|
||||||
|
description = ""
|
||||||
|
default = "keptn"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "KEPTN_DOMAIN" {
|
||||||
|
type = string
|
||||||
|
description = "Version Keptn"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
variable "CLUSTER_NAME" {
|
||||||
|
type = string
|
||||||
|
description = ""
|
||||||
|
default = "xOps"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "DT_TENANT" {
|
||||||
|
type = string
|
||||||
|
description = ""
|
||||||
|
default = "https://elw69065.live.dynatrace.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "DT_API_TOKEN" {
|
||||||
|
type = string
|
||||||
|
description = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "k8S_CONTEXT" {
|
||||||
|
type = string
|
||||||
|
description = ""
|
||||||
|
default=null
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue