Skip to content

Commit

Permalink
updating to dynatrace-operator 1.3.0 and adding test job
Browse files Browse the repository at this point in the history
  • Loading branch information
akirasoft1 committed Oct 11, 2024
1 parent 63be3db commit 6c7552f
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,37 +1,31 @@
---
apiVersion: dynatrace.com/v1beta1
apiVersion: dynatrace.com/v1beta2
kind: DynaKube
metadata:
name: "${dynakubename}"
namespace: dynatrace
annotations:
feature.dynatrace.com/automatic-kubernetes-api-monitoring: "true"
feature.dynatrace.com/k8s-app-enabled: "true"
spec:
apiUrl: ${apiurl}
apiUrl: "${apiurl}"
tokens: ${dynatracesecretname}
skipCertCheck: false
oneAgent:
classicFullStack:
# image: ""
cloudNativeFullStack:
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Exists
- effect: NoSchedule
key: node-role.kubernetes.io/control-plane
operator: Exists
env:
- name: ONEAGENT_ENABLE_VOLUME_STORAGE
value: "${oneagentvolumestorage}"
activeGate:
capabilities:
- routing
- kubernetes-monitoring
- dynatrace-api
#image: ""
resources:
requests:
cpu: 50m
cpu: 500m
memory: 512Mi
limits:
cpu: 1000m
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: dynatrace-operator
Expand All @@ -12,7 +12,7 @@ spec:
kind: HelmRepository
name: dynatrace-operator
namespace: flux-system
version: 0.10.1
version: 1.3.0
interval: 1m0s
values:
installCRD: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ metadata:
labels:
aws.conformance.vendor: dynatrace
aws.conformance.vendor-solution: dynatrace
aws.conformance.vendor-solution-version: 0.10.1
aws.conformance.vendor-solution-version: 1.3.0
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@ metadata:
namespace: flux-system
data:
# api url for dynatrace environment
apiurl: "https://syh360.dynatrace-managed.com/e/29143f4b-2894-450d-a1fc-89a197b68909/api"
apiurl: "<replaceme>"
# name of secret containing tokens
dynatracesecretname: "dt-secret"
# name of cluster to be listed in Dynatrace
dynakubename: "eks-flux-test-cluster"
# ONEAGENT_ENABLE_VOLUME_STORAGE should be false for EKS, the escaped are due to flux being weird
# and the value here isn't actually a boolean
oneagentvolumestorage: "\"false\""
dynakubename: "<replaceme>"
118 changes: 118 additions & 0 deletions eks-anywhere-common/Testers/dynatrace/testJob.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: dynatrace-tester-cron
namespace: dynatrace
spec:
schedule: "*/10 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: job
image: 'alpine/k8s:1.26.2'
command: ["/bin/bash", "-c"]
args:
- |
#!/bin/bash
PATTERN="Ping received: Healthy("
DAEMONSET_INCLUDE_PATTERN="oneagent"
DAEMONSET_EXCLUDE_PATTERN="csi"
CUSTOM_RESOURCE="dynakubes.dynatrace.com"
EXIT_STATUS=0 # Default to success
echo "Starting search for Dynakubes..."
# Get the list of namespaces
NAMESPACES=$(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}')
echo "NAMESPACES: $NAMESPACES"
# Iterate over each namespace
for NAMESPACE in $NAMESPACES; do
echo "Checking namespace: $NAMESPACE"
# Get the list of custom resources in the current namespace that match the pattern
RESOURCES=$(kubectl get $CUSTOM_RESOURCE -n $NAMESPACE -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n')
echo "RESOURCES: $RESOURCES"
if [[ -z $RESOURCES ]]; then
echo "No matching resources found in namespace: $NAMESPACE"
continue
fi
# Iterate over each matching resource
for RESOURCE in $RESOURCES; do
echo "Found matching resource: $RESOURCE in namespace: $NAMESPACE"
# Get the list of pods in the current namespace created by the custom resource
echo "Checking pods created by the custom resource: $RESOURCE"
PODS=$(kubectl get pods -n $NAMESPACE --selector=app.kubernetes.io/created-by=$RESOURCE,app.kubernetes.io/name=oneagent -o jsonpath='{.items[*].metadata.name}')
echo "Oneagent pods: $PODS"
ALL_PODS_VALID=true # Assume all pods are valid initially
# Iterate over each pod
for POD in $PODS; do
echo "Checking logs for oneagent pod: $POD in CustomResource: $RESOURCE"
# Get the logs of the current pod
LOGS=$(kubectl logs -n $NAMESPACE $POD)
# Check the logs for the pattern
if ! echo "$LOGS" | grep -q "$PATTERN"; then
echo "Pattern not found in pod: $POD"
ALL_PODS_VALID=false # Mark as invalid if the pattern is not found
break
fi
done
# If any pod in the DaemonSet does not have the pattern, set exit status to failure
if ! $ALL_PODS_VALID; then
EXIT_STATUS=1
fi
done
done
if [[ $EXIT_STATUS -eq 0 ]]; then
echo "Search successful: Pattern found in all pods of all matching DaemonSets."
else
echo "Search complete: Pattern not found in all pods of one or more DaemonSets."
fi
exit $EXIT_STATUS
restartPolicy: Never
serviceAccountName: test-dynatrace
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dynatrace-test-role
rules:
# Permissions for listing namespaces
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list", "watch"]
# Permissions for listing pods and getting pod logs
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
# Permissions for getting pod logs
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get"]
# Permissions for listing the custom resource dynakube from the dynatrace.com apigroup
- apiGroups: ["dynatrace.com"]
resources: ["dynakubes"]
verbs: ["get", "list", "watch"]

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: test-dynatrace
namespace: dynatrace

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: custom-list-pods-logs-dynakube-binding
subjects:
- kind: ServiceAccount
name: test-dynatrace
namespace: dynatrace
roleRef:
kind: ClusterRole
name: dynatrace-test-role
apiGroup: rbac.authorization.k8s.io

0 comments on commit 6c7552f

Please sign in to comment.