@@ -40,71 +40,20 @@ spec:
4040 default : ' false'
4141 type : string
4242 tasks :
43- # ── AWS OIDC authentication ──
44- - name : get-aws-creds
45- description : Obtain temporary AWS credentials via OIDC federation.
46- taskSpec :
47- results :
48- - name : aws-access-key-id
49- - name : aws-secret-access-key
50- - name : aws-session-token
51- volumes :
52- - name : oidc-token
53- projected :
54- sources :
55- - serviceAccountToken :
56- audience : sts.amazonaws.com
57- expirationSeconds : 3600
58- path : token
59- steps :
60- - name : assume-role
61- image : amazon/aws-cli:latest
62- volumeMounts :
63- - name : oidc-token
64- mountPath : /var/run/secrets/oidc
65- readOnly : true
66- script : |
67- #!/bin/sh
68- set -euo pipefail
69- echo "[sts] Assuming role via OIDC..."
70- CREDS=$(aws sts assume-role-with-web-identity \
71- --role-arn "arn:aws:iam::313828097073:role/konflux-rhelai-ci" \
72- --role-session-name "rhelai-$(context.pipelineRun.name)" \
73- --web-identity-token file:///var/run/secrets/oidc/token \
74- --duration-seconds 14400 \
75- --output json)
76- echo "$CREDS" | python3 -c "
77- import json, sys
78- c = json.load(sys.stdin)['Credentials']
79- open('$(results.aws-access-key-id.path)', 'w').write(c['AccessKeyId'])
80- open('$(results.aws-secret-access-key.path)', 'w').write(c['SecretAccessKey'])
81- open('$(results.aws-session-token.path)', 'w').write(c['SessionToken'])
82- "
83- echo "[sts] Temporary credentials obtained (valid 4h)."
84- echo "[sts] Key ID length: $(wc -c < $(results.aws-access-key-id.path))"
85- echo "[sts] Secret length: $(wc -c < $(results.aws-secret-access-key.path))"
86- echo "[sts] Token length: $(wc -c < $(results.aws-session-token.path))"
87- echo "[sts] Key ID hash: $(md5sum $(results.aws-access-key-id.path) | cut -d' ' -f1)"
88- echo "[sts] Token hash: $(md5sum $(results.aws-session-token.path) | cut -d' ' -f1)"
89-
9043 # ── RHEL AI provisioning (MAPT) ──
9144 - name : provision-rhelai
9245 description : Provision a RHEL AI instance with vLLM auto-started.
9346 timeout : 2h
9447 runAfter :
9548 # TODO: restore provision-cluster dependency
96- - get-aws-creds
97- - get-aws-creds
49+ - provision-cluster
9850 taskSpec :
9951 params :
10052 - name : rhelai-version
10153 - name : instance-type
10254 - name : model
10355 - name : debug
10456 - name : spot
105- - name : aws-access-key-id
106- - name : aws-secret-access-key
107- - name : aws-session-token
10857 results :
10958 - name : host
11059 description : " RHEL AI instance hostname or IP"
@@ -118,19 +67,36 @@ spec:
11867 secretName : aws-mapt-credentials
11968 - name : host-info
12069 emptyDir : {}
70+ - name : oidc-token
71+ projected :
72+ sources :
73+ - serviceAccountToken :
74+ audience : sts.amazonaws.com
75+ expirationSeconds : 3600
76+ path : token
12177 steps :
12278 - name : create-instance
12379 image : ghcr.io/redhat-developer/mapt:pr-848
12480 imagePullPolicy : Always
12581 env :
12682 - name : HOME
12783 value : /opt/mapt/run
84+ - name : AWS_WEB_IDENTITY_TOKEN_FILE
85+ value : /var/run/secrets/oidc/token
86+ - name : AWS_ROLE_ARN
87+ valueFrom :
88+ secretKeyRef :
89+ name : aws-mapt-credentials
90+ key : AWS_ROLE_ARN
12891 volumeMounts :
12992 - name : aws-credentials
13093 mountPath : /opt/aws-credentials
13194 readOnly : true
13295 - name : host-info
13396 mountPath : /opt/host-info
97+ - name : oidc-token
98+ mountPath : /var/run/secrets/oidc
99+ readOnly : true
134100 resources :
135101 requests :
136102 cpu : " 100m"
@@ -142,15 +108,6 @@ spec:
142108 #!/bin/sh
143109 set -uo pipefail
144110
145- export AWS_ACCESS_KEY_ID="$(params.aws-access-key-id)"
146- export AWS_SECRET_ACCESS_KEY="$(params.aws-secret-access-key)"
147- export AWS_SESSION_TOKEN="$(params.aws-session-token)"
148- export AWS_STS_REGIONAL_ENDPOINTS=regional
149- echo "[mapt] Key ID length: ${#AWS_ACCESS_KEY_ID}"
150- echo "[mapt] Secret length: ${#AWS_SECRET_ACCESS_KEY}"
151- echo "[mapt] Token length: ${#AWS_SESSION_TOKEN}"
152- echo "[mapt] Key ID hash: $(echo -n "$AWS_ACCESS_KEY_ID" | md5sum | cut -d' ' -f1)"
153- echo "[mapt] Token hash: $(echo -n "$AWS_SESSION_TOKEN" | md5sum | cut -d' ' -f1)"
154111 BUCKET=$(cat /opt/aws-credentials/S3_BUCKET)
155112 RUN_ID="$(context.pipelineRun.name)"
156113 HF_TOKEN=$(cat /opt/aws-credentials/HUGGING_FACE_HUB_TOKEN)
@@ -241,12 +198,6 @@ spec:
241198 value : " $(params.debug)"
242199 - name : spot
243200 value : " $(params.spot)"
244- - name : aws-access-key-id
245- value : " $(tasks.get-aws-creds.results.aws-access-key-id)"
246- - name : aws-secret-access-key
247- value : " $(tasks.get-aws-creds.results.aws-secret-access-key)"
248- - name : aws-session-token
249- value : " $(tasks.get-aws-creds.results.aws-session-token)"
250201
251202 # ── OpenShift cluster provisioning (same as existing e2e pipeline) ──
252203 - name : eaas-provision-space
@@ -481,33 +432,41 @@ spec:
481432 params :
482433 - name : debug
483434 value : " $(params.debug)"
484- - name : aws-access-key-id
485- value : " $(tasks.get-aws-creds.results.aws-access-key-id)"
486- - name : aws-secret-access-key
487- value : " $(tasks.get-aws-creds.results.aws-secret-access-key)"
488- - name : aws-session-token
489- value : " $(tasks.get-aws-creds.results.aws-session-token)"
490435 taskSpec :
491436 params :
492437 - name : debug
493- - name : aws-access-key-id
494- - name : aws-secret-access-key
495- - name : aws-session-token
496438 volumes :
497439 - name : aws-credentials
498440 secret :
499441 secretName : aws-mapt-credentials
442+ - name : oidc-token
443+ projected :
444+ sources :
445+ - serviceAccountToken :
446+ audience : sts.amazonaws.com
447+ expirationSeconds : 3600
448+ path : token
500449 steps :
501450 - name : destroy-instance
502451 image : ghcr.io/redhat-developer/mapt:pr-848
503452 imagePullPolicy : Always
504453 env :
505454 - name : HOME
506455 value : /opt/mapt/run
456+ - name : AWS_WEB_IDENTITY_TOKEN_FILE
457+ value : /var/run/secrets/oidc/token
458+ - name : AWS_ROLE_ARN
459+ valueFrom :
460+ secretKeyRef :
461+ name : aws-mapt-credentials
462+ key : AWS_ROLE_ARN
507463 volumeMounts :
508464 - name : aws-credentials
509465 mountPath : /opt/aws-credentials
510466 readOnly : true
467+ - name : oidc-token
468+ mountPath : /var/run/secrets/oidc
469+ readOnly : true
511470 resources :
512471 requests :
513472 cpu : " 100m"
@@ -519,9 +478,6 @@ spec:
519478 #!/bin/sh
520479 set -uo pipefail
521480
522- export AWS_ACCESS_KEY_ID="$(params.aws-access-key-id)"
523- export AWS_SECRET_ACCESS_KEY="$(params.aws-secret-access-key)"
524- export AWS_SESSION_TOKEN="$(params.aws-session-token)"
525481 export AWS_DEFAULT_REGION="us-east-1"
526482 BUCKET=$(cat /opt/aws-credentials/S3_BUCKET)
527483 RUN_ID="$(context.pipelineRun.name)"
0 commit comments