@@ -372,6 +372,13 @@ Starting cluster creation process...
372
372
pmmHelmChartVersion : params. PMM_HELM_CHART_VERSION ,
373
373
pmmImageRepository : params. PMM_IMAGE_REPOSITORY ,
374
374
pmmAdminPassword : params. PMM_ADMIN_PASSWORD ?: ' <GENERATED>' , // Default to auto-generation
375
+ // SSL Configuration
376
+ enableSSL : params. ENABLE_SSL ,
377
+ sslMethod : params. SSL_METHOD ,
378
+ sslEmail : params. SSL_EMAIL ,
379
+ useStaging : params. USE_STAGING_CERT ,
380
+ consoleCustomDomain : params. CONSOLE_CUSTOM_DOMAIN ,
381
+ pmmCustomDomain : params. PMM_CUSTOM_DOMAIN ,
375
382
buildUser : env. BUILD_USER_ID ?: ' jenkins' ,
376
383
accessKey : AWS_ACCESS_KEY_ID ,
377
384
secretKey : AWS_SECRET_ACCESS_KEY
@@ -410,6 +417,103 @@ Starting cluster creation process...
410
417
}
411
418
}
412
419
420
+ stage(' Configure SSL Certificates' ) {
421
+ when {
422
+ expression { params. ENABLE_SSL && env. CLUSTER_DIR }
423
+ }
424
+ steps {
425
+ script {
426
+ echo " "
427
+ echo " ====================================================================="
428
+ echo " Configuring SSL Certificates"
429
+ echo " ====================================================================="
430
+ echo " "
431
+ echo " SSL Method: ${ params.SSL_METHOD} "
432
+ echo " Base Domain: ${ params.BASE_DOMAIN} "
433
+
434
+ def sslConfig = [
435
+ clusterName : env. FINAL_CLUSTER_NAME ,
436
+ baseDomain : params. BASE_DOMAIN ,
437
+ kubeconfig : env. KUBECONFIG ,
438
+ method : params. SSL_METHOD ,
439
+ email : params. SSL_EMAIL ,
440
+ useStaging : params. USE_STAGING_CERT
441
+ ]
442
+
443
+ def sslResults = [:]
444
+
445
+ if (params. SSL_METHOD == ' letsencrypt' ) {
446
+ echo " Setting up Let's Encrypt certificates..."
447
+
448
+ // Configure console domain
449
+ def consoleDomain = params. CONSOLE_CUSTOM_DOMAIN ?:
450
+ " console-${ env.FINAL_CLUSTER_NAME} .${ params.BASE_DOMAIN} "
451
+
452
+ sslConfig. consoleDomain = consoleDomain
453
+
454
+ // Setup Let's Encrypt
455
+ sslResults = openshiftSSL. setupLetsEncrypt(sslConfig)
456
+
457
+ if (sslResults. consoleCert) {
458
+ echo " ✓ Console certificate configured for: ${ consoleDomain} "
459
+ env. CONSOLE_SSL_DOMAIN = consoleDomain
460
+ }
461
+ } else if (params. SSL_METHOD == ' acm' ) {
462
+ echo " Setting up AWS ACM certificates..."
463
+
464
+ withCredentials([
465
+ aws(
466
+ credentialsId : ' jenkins-openshift-aws' ,
467
+ accessKeyVariable : ' AWS_ACCESS_KEY_ID' ,
468
+ secretKeyVariable : ' AWS_SECRET_ACCESS_KEY'
469
+ )
470
+ ]) {
471
+ def services = []
472
+
473
+ // Add PMM service if deployed
474
+ if (params. DEPLOY_PMM && env. PMM_URL ) {
475
+ def pmmDomain = params. PMM_CUSTOM_DOMAIN ?:
476
+ " pmm-${ env.FINAL_CLUSTER_NAME} .${ params.BASE_DOMAIN} "
477
+
478
+ services. add([
479
+ name : ' monitoring-service' ,
480
+ namespace : ' pmm-monitoring' ,
481
+ domain : pmmDomain
482
+ ])
483
+ }
484
+
485
+ sslConfig. services = services
486
+ sslConfig. accessKey = AWS_ACCESS_KEY_ID
487
+ sslConfig. secretKey = AWS_SECRET_ACCESS_KEY
488
+
489
+ sslResults = awsCertificates. setupACM(sslConfig)
490
+
491
+ if (sslResults. services) {
492
+ sslResults. services. each { name , config ->
493
+ if (config. configured) {
494
+ echo " ✓ Service ${ name} configured with ACM certificate"
495
+ if (config. domain) {
496
+ echo " Domain: https://${ config.domain} "
497
+ }
498
+ }
499
+ }
500
+ }
501
+ }
502
+ }
503
+
504
+ // Store SSL results for post-creation display
505
+ env. SSL_CONFIGURED = sslResults ? ' true' : ' false'
506
+
507
+ if (sslResults. errors && ! sslResults. errors. isEmpty()) {
508
+ echo " SSL configuration completed with warnings:"
509
+ sslResults. errors. each { error ->
510
+ echo " ⚠ ${ error} "
511
+ }
512
+ }
513
+ }
514
+ }
515
+ }
516
+
413
517
stage(' Post-Creation Tasks' ) {
414
518
steps {
415
519
script {
@@ -435,6 +539,12 @@ Starting cluster creation process...
435
539
echo " ------------------"
436
540
echo " API URL: ${ env.CLUSTER_API_URL} "
437
541
echo " Console URL: ${ env.CLUSTER_CONSOLE_URL ?: 'Pending...'} "
542
+
543
+ // Display SSL console URL if configured
544
+ if (params. ENABLE_SSL && params. SSL_METHOD == ' letsencrypt' && env. CONSOLE_SSL_DOMAIN ) {
545
+ echo " Console SSL URL: https://${ env.CONSOLE_SSL_DOMAIN} "
546
+ }
547
+
438
548
echo " Kubeconfig: Available in Jenkins artifacts"
439
549
echo " "
440
550
@@ -460,6 +570,13 @@ Starting cluster creation process...
460
570
echo " Access URL: ${ env.PMM_URL} "
461
571
echo " Username: admin"
462
572
echo " Password: ${ passwordInfo} "
573
+
574
+ // Display SSL info if configured
575
+ if (params. ENABLE_SSL && params. SSL_METHOD == ' acm' && env. SSL_CONFIGURED == ' true' ) {
576
+ def pmmDomain = params. PMM_CUSTOM_DOMAIN ?:
577
+ " pmm-${ env.FINAL_CLUSTER_NAME} .${ params.BASE_DOMAIN} "
578
+ echo " SSL Access: https://${ pmmDomain} "
579
+ }
463
580
echo " "
464
581
} else if (params. DEPLOY_PMM ) {
465
582
echo " PMM DEPLOYMENT STATUS: NOT DEPLOYED"
0 commit comments