Skip to content

Commit 08993f2

Browse files
galiachengedburns
authored andcommitted
fix KEDA installation and Prometheus basic_auth. (#2)
* validate KEdA pod count. * Update enablePrometheusMetrics.sh * test * fix keda install * use specified keda version * remove debug cmd * clean up * fix function that gets keda version. * clean up * use password file in basic_auth * fix kubectl apply -f -
1 parent 402ff79 commit 08993f2

File tree

2 files changed

+74
-11
lines changed

2 files changed

+74
-11
lines changed

weblogic-azure-aks/src/main/arm/scripts/common.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export ocrGaImagePath="middleware/weblogic"
4343
export ocrCpuImagePath="middleware/weblogic_cpu"
4444
export gitUrl4CpuImages="https://raw.githubusercontent.com/oracle/weblogic-azure/main/weblogic-azure-aks/src/main/resources/weblogic_cpu_images.json"
4545
export gitUrl4AksWellTestedVersionJsonFile="https://raw.githubusercontent.com/oracle/weblogic-azure/main/weblogic-azure-aks/src/main/resources/aks_well_tested_version.json"
46+
export gitUrl4AksToolingWellTestedVersionJsonFile="https://raw.githubusercontent.com/galiacheng/weblogic-azure/haiche-wls-autoscaling/weblogic-azure-aks/src/main/resources/aks_tooling_well_tested_versions.json"
4647
export gitUrl4WLSToolingFamilyJsonFile="https://raw.githubusercontent.com/oracle/weblogic-azure/main/weblogic-azure-aks/src/main/resources/weblogic_tooling_family.json"
4748
export gitUrl4AzureIdentityExtensionsPomFile="https://raw.githubusercontent.com/oracle/weblogic-azure/main/weblogic-azure-aks/src/main/resources/azure-identity-extensions.xml"
4849
export gitUrl4MySQLDriverPomFile="https://raw.githubusercontent.com/oracle/weblogic-azure/main/weblogic-azure-aks/src/main/resources/mysql-connector-java.xml"

weblogic-azure-aks/src/main/arm/scripts/inline-scripts/enablePrometheusMetrics.sh

Lines changed: 73 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function connect_aks(){
1010
}
1111

1212
function enable_promethues_metrics(){
13-
az extension remove --name aks-preview
13+
# See https://learn.microsoft.com/en-us/azure/azure-monitor/containers/kubernetes-monitoring-enable?tabs=cli#enable-prometheus-and-grafana
1414
az extension add --name k8s-extension
1515

1616
### Use existing Azure Monitor workspace
@@ -22,6 +22,9 @@ function enable_promethues_metrics(){
2222

2323
utility_validate_status "Enable Promethues Metrics."
2424

25+
az extension add --name aks-preview
26+
az extension remove --name k8s-extension
27+
2528
#Verify that the DaemonSet was deployed properly on the Linux node pools
2629
#https://learn.microsoft.com/en-us/azure/azure-monitor/containers/kubernetes-monitoring-enable?tabs=cli#managed-prometheus
2730
kubectl get ds ama-metrics-node --namespace=kube-system
@@ -31,6 +34,19 @@ function enable_promethues_metrics(){
3134

3235
# https://learn.microsoft.com/en-us/azure/azure-monitor/containers/prometheus-metrics-scrape-configuration
3336
function deploy_customize_scraping(){
37+
# https://learn.microsoft.com/en-us/azure/azure-monitor/containers/prometheus-metrics-scrape-configuration?tabs=CRDConfig%2CCRDScrapeConfig#basic-authentication
38+
local wlsPswBase64=$(echo -n "${WLS_ADMIN_PASSWORD}" | base64)
39+
cat <<EOF | kubectl apply -f -
40+
apiVersion: v1
41+
kind: Secret
42+
metadata:
43+
name: ama-metrics-mtls-secret
44+
namespace: kube-system
45+
type: Opaque
46+
data:
47+
password1: ${wlsPswBase64}
48+
EOF
49+
3450
#create scrape config file
3551
cat <<EOF >prometheus-config
3652
global:
@@ -43,7 +59,7 @@ scrape_configs:
4359
names: [${WLS_NAMESPACE}]
4460
basic_auth:
4561
username: ${WLS_ADMIN_USERNAME}
46-
password: ${WLS_ADMIN_PASSWORD}
62+
password_file: /etc/prometheus/certs/password1
4763
EOF
4864

4965
#validate the scrape config file
@@ -76,7 +92,7 @@ function get_wls_monitoring_exporter_image_url() {
7692
curl -m ${curlMaxTime} --retry ${retryMaxAttempt} -fsL "${gitUrl4WLSToolingFamilyJsonFile}" -o ${wlsToolingFamilyJsonFile}
7793
if [ $? -eq 0 ]; then
7894
imageURL=$(cat ${wlsToolingFamilyJsonFile} | jq ".items[] | select(.key==\"WME\") | .imageURL" | tr -d "\"")
79-
echo "well tested monitoring exporter image url: ${imageURL}"
95+
echo_stdout "well tested monitoring exporter image url: ${imageURL}"
8096
fi
8197

8298
echo_stdout "Use monitoring exporter image: ${imageURL} "
@@ -200,6 +216,11 @@ function wait_for_keda_ready(){
200216
echo_stdout "Check if KEDA is ready, attempt: ${attempt}."
201217
ready=true
202218

219+
local podCount=$(kubectl get pods -n ${KEDA_NAMESPACE} -o json | jq -r '.items | length')
220+
if [ $podCount -lt 3 ];then
221+
ready=false
222+
fi
223+
203224
local podnames=$(kubectl get pods -n ${KEDA_NAMESPACE} -o json | jq -r '.items[].metadata.name')
204225
for podname in ${podnames}
205226
do
@@ -219,14 +240,49 @@ function wait_for_keda_ready(){
219240
exit 1
220241
fi
221242

222-
echo "KEDA is running."
243+
echo_stderr "KEDA is running."
244+
}
245+
246+
function get_keda_latest_version() {
247+
local kedaVersion
248+
kedaVersion=$(helm search repo kedacore/keda --versions | awk '/^kedacore\/keda/ {print $2; exit}')
249+
export KEDA_VERSION="${kedaVersion}"
250+
echo_stderr "Use latest KEDA. KEDA version: ${KEDA_VERSION}"
251+
}
252+
253+
254+
function get_keda_version() {
255+
local versionJsonFileName="aks_tooling_well_tested_version.json"
256+
local kedaWellTestedVersion
257+
258+
# Download the version JSON file
259+
curl -L "${gitUrl4AksToolingWellTestedVersionJsonFile}" --retry "${retryMaxAttempt}" -o "${versionJsonFileName}"
260+
261+
# Extract KEDA version from JSON
262+
kedaWellTestedVersion=$(jq -r '.items[] | select(.key == "keda") | .version' "${versionJsonFileName}")
263+
264+
# Check if version is available
265+
if [ $? -ne 0 ]; then
266+
get_keda_latest_version
267+
return 0
268+
fi
269+
270+
# Print KEDA well-tested version
271+
echo_stderr "KEDA well-tested version: ${kedaWellTestedVersion}"
272+
273+
# Search for KEDA version in Helm repo
274+
if ! helm search repo kedacore/keda --versions | grep -q "${kedaWellTestedVersion}"; then
275+
get_keda_latest_version
276+
return 0
277+
fi
278+
279+
# Export KEDA version
280+
export KEDA_VERSION="${kedaWellTestedVersion}"
281+
echo_stderr "KEDA version: ${KEDA_VERSION}"
223282
}
224283

225284
# https://learn.microsoft.com/en-us/azure/azure-monitor/containers/integrate-keda
226285
function enable_keda_addon() {
227-
az extension remove --name k8s-extension
228-
az extension add --name aks-preview
229-
230286
local oidcEnabled=$(az aks show --resource-group $AKS_CLUSTER_RG_NAME --name $AKS_CLUSTER_NAME --query oidcIssuerProfile.enabled)
231287
local workloadIdentity=$(az aks show --resource-group $AKS_CLUSTER_RG_NAME --name $AKS_CLUSTER_NAME --query securityProfile.workloadIdentity)
232288

@@ -266,13 +322,19 @@ EOF
266322
helm repo add kedacore https://kedacore.github.io/charts
267323
helm repo update
268324

325+
get_keda_version
326+
269327
helm install keda kedacore/keda \
270328
--namespace ${KEDA_NAMESPACE} \
271-
--set serviceAccount.create=false \
272-
--set serviceAccount.name=${KEDA_SERVICE_ACCOUNT_NAME} \
329+
--set serviceAccount.operator.create=false \
330+
--set serviceAccount.operator.name=${KEDA_SERVICE_ACCOUNT_NAME} \
273331
--set podIdentity.azureWorkload.enabled=true \
274332
--set podIdentity.azureWorkload.clientId=$KEDA_UAMI_CLIENT_ID \
275-
--set podIdentity.azureWorkload.tenantId=$tenantId
333+
--set podIdentity.azureWorkload.tenantId=$tenantId \
334+
--set app.kubernetes.io/managed-by=Helm \
335+
--set meta.helm.sh/release-name=keda \
336+
--set meta.helm.sh/release-namespace=${KEDA_NAMESPACE} \
337+
--version ${KEDA_VERSION}
276338

277339
#validate
278340
wait_for_keda_ready
@@ -346,4 +408,4 @@ deploy_customize_scraping
346408

347409
enable_keda_addon
348410

349-
output
411+
output

0 commit comments

Comments
 (0)