From 85d9b0d598bd1924315cc58c876d60d3fd1005b4 Mon Sep 17 00:00:00 2001 From: Jakub Balhar Date: Wed, 21 Oct 2020 16:54:16 +0200 Subject: [PATCH] Update multiple instances setup (#898) * update config to 2020 version Signed-off-by: jandadav * certificates and config update Signed-off-by: jandadav * Properly override allPeersUrls Signed-off-by: Jakub Balhar * Working multi instance setup Signed-off-by: Jakub Balhar * Make sure the services are accessible via Gateway and discovered Signed-off-by: Jakub Balhar * revert run to master Signed-off-by: jandadav Co-authored-by: jandadav Co-authored-by: Jakub Balhar --- config/local-multi/api-catalog-service.yml | 12 +++--- config/local-multi/discoverable-client.yml | 8 ++-- config/local-multi/discovery-service-1.yml | 27 +++++++------ config/local-multi/discovery-service-2.yml | 27 +++++++------ config/local-multi/gateway-service.yml | 26 ++++++++++--- keystore/local_ca/localca.cer | 36 +++++++++--------- keystore/local_ca/localca.keystore.p12 | Bin 2721 -> 2721 bytes .../localhost/localhost-multi.keystore.p12 | Bin 0 -> 7681 bytes .../localhost/localhost-multi.truststore.p12 | Bin 0 -> 1322 bytes package.json | 6 +-- 10 files changed, 83 insertions(+), 59 deletions(-) create mode 100644 keystore/localhost/localhost-multi.keystore.p12 create mode 100644 keystore/localhost/localhost-multi.truststore.p12 diff --git a/config/local-multi/api-catalog-service.yml b/config/local-multi/api-catalog-service.yml index d3e0979cf4..8d9c358793 100644 --- a/config/local-multi/api-catalog-service.yml +++ b/config/local-multi/api-catalog-service.yml @@ -1,5 +1,5 @@ environment: - discoveryLocations: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ + discoveryLocations: https://localhost2:10021/eureka/,https://localhost:10011/eureka/ dsIpAddress: 0.0.0.0 eurekaPassword: password eurekaUserId: eureka @@ -8,7 +8,7 @@ environment: ipAddress: 127.0.0.1 port: 10014 preferIpAddress: false - truststore: keystore/localhost/localhost.truststore.p12 + truststore: keystore/localhost/localhost-multi.truststore.p12 truststorePassword: password truststoreType: PKCS12 @@ -22,12 +22,14 @@ eureka: server: ssl: - enabled: false - keyAlias: localhost + keyAlias: localhost-multi keyPassword: password - keyStore: keystore/localhost/localhost.keystore.p12 + keyStore: keystore/localhost/localhost-multi.keystore.p12 keyStorePassword: password keyStoreType: PKCS12 + truststore: keystore/localhost/localhost-multi.truststore.p12 + truststorePassword: password + truststoreType: PKCS12 apiml: service-registry: cacheRefreshInitialDelayInMillis: 10000 diff --git a/config/local-multi/discoverable-client.yml b/config/local-multi/discoverable-client.yml index 970595c20a..e88f8b1472 100644 --- a/config/local-multi/discoverable-client.yml +++ b/config/local-multi/discoverable-client.yml @@ -5,7 +5,7 @@ apiml: hostname: localhost ipAddress: 127.0.0.1 port: 10012 - discoveryServiceUrls: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ + discoveryServiceUrls: https://localhost2:10021/eureka/,https://localhost:10011/eureka/ spring: output: @@ -14,11 +14,11 @@ spring: server: ssl: - keyAlias: localhost + keyAlias: localhost-multi keyPassword: password - keyStore: keystore/selfsigned/localhost.keystore.p12 + keyStore: keystore/localhost/localhost-multi.keystore.p12 keyStorePassword: password keyStoreType: PKCS12 - trustStore: keystore/selfsigned/localhost.truststore.p12 + trustStore: keystore/localhost/localhost-multi.truststore.p12 trustStorePassword: password trustStoreType: PKCS12 diff --git a/config/local-multi/discovery-service-1.yml b/config/local-multi/discovery-service-1.yml index 33bd7e195f..88d1919cec 100644 --- a/config/local-multi/discovery-service-1.yml +++ b/config/local-multi/discovery-service-1.yml @@ -2,12 +2,16 @@ spring.profiles.include: diag apiml: service: - hostname: localhost2 - ipAddress: 127.0.0.2 - port: 10021 + hostname: localhost + ipAddress: 0.0.0.0 + port: 10011 discovery: staticApiDefinitionsDirectories: config/local/api-defs - allPeersUrls: http://localhost2:10021/eureka/,http://localhost3:10031/eureka/ + allPeersUrls: https://localhost2:10021/eureka + security: + ssl: + verifySslCertificatesOfServices: true + banner: console spring: output: @@ -17,18 +21,17 @@ spring: --- spring.profiles: https -apiml: - discovery: - allPeersUrls: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ - server: - address: 0.0.0.0 ssl: - keyAlias: localhost + keyAlias: localhost-multi keyPassword: password keyStoreType: PKCS12 - keyStore: keystore/localhost/localhost.keystore.p12 + keyStore: keystore/localhost/localhost-multi.keystore.p12 keyStorePassword: password trustStoreType: PKCS12 - trustStore: keystore/localhost/localhost.truststore.p12 + trustStore: keystore/localhost/localhost-multi.truststore.p12 trustStorePassword: password + +apiml: + discovery: + allPeersUrls: https://localhost2:10021/eureka diff --git a/config/local-multi/discovery-service-2.yml b/config/local-multi/discovery-service-2.yml index 774a739c67..b31c3fc4f7 100644 --- a/config/local-multi/discovery-service-2.yml +++ b/config/local-multi/discovery-service-2.yml @@ -2,12 +2,16 @@ spring.profiles.include: diag apiml: service: - hostname: localhost3 - ipAddress: 127.0.0.3 - port: 10031 + hostname: localhost2 + ipAddress: 0.0.0.0 + port: 10021 discovery: staticApiDefinitionsDirectories: config/local/api-defs - allPeersUrls: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ + allPeersUrls: https://localhost:10011/eureka + security: + ssl: + verifySslCertificatesOfServices: true + banner: console spring: output: @@ -17,18 +21,17 @@ spring: --- spring.profiles: https -apiml: - discovery: - allPeersUrls: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ - server: - address: 0.0.0.0 ssl: - keyAlias: localhost + keyAlias: localhost-multi keyPassword: password keyStoreType: PKCS12 - keyStore: keystore/localhost/localhost.keystore.p12 + keyStore: keystore/localhost/localhost-multi.keystore.p12 keyStorePassword: password trustStoreType: PKCS12 - trustStore: keystore/localhost/localhost.truststore.p12 + trustStore: keystore/localhost/localhost-multi.truststore.p12 trustStorePassword: password + +apiml: + discovery: + allPeersUrls: https://localhost:10011/eureka diff --git a/config/local-multi/gateway-service.yml b/config/local-multi/gateway-service.yml index 6ea8a385ba..937c5c1448 100644 --- a/config/local-multi/gateway-service.yml +++ b/config/local-multi/gateway-service.yml @@ -2,22 +2,38 @@ spring.profiles.include: diag apiml: service: hostname: localhost - ipAddress: 127.0.0.1 + ipAddress: 0.0.0.0 port: 10010 - discoveryServiceUrls: https://localhost2:10021/eureka/,https://localhost3:10031/eureka/ + discoveryServiceUrls: https://localhost2:10021/eureka/ + security: + auth: + provider: dummy + zosmfServiceId: zosmf # Replace me with the correct z/OSMF service id + passTicket: + timeout: 360 # [s] - default timeout to expire (z/OS has 10 mins as default) + ssl: + verifySslCertificatesOfServices: true + zosmf: + useJwtToken: true # if true and z/OSMF returns JWT token use it, otherwise create Zowe JWT token with LTPA token from z/OSMF, default is true + x509: + enabled: true + banner: console spring: output: ansi: enabled: always + cache: + ehcache: + config: classpath:ehcache.xml server: ssl: - keyAlias: localhost + keyAlias: localhost-multi keyPassword: password - keyStore: keystore/localhost/localhost.keystore.p12 + keyStore: keystore/localhost/localhost-multi.keystore.p12 keyStorePassword: password keyStoreType: PKCS12 - trustStore: keystore/localhost/localhost.truststore.p12 + trustStore: keystore/localhost/localhost-multi.truststore.p12 trustStorePassword: password trustStoreType: PKCS12 diff --git a/keystore/local_ca/localca.cer b/keystore/local_ca/localca.cer index 07378b63f2..d109faaa1b 100644 --- a/keystore/local_ca/localca.cer +++ b/keystore/local_ca/localca.cer @@ -1,24 +1,24 @@ ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIEdkRICDANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIES2Kd2TANBgkqhkiG9w0BAQsFADCBnjELMAkGA1UEBhMC Q1oxDzANBgNVBAgTBlByYWd1ZTEPMA0GA1UEBxMGUHJhZ3VlMRQwEgYDVQQKEwta b3dlIFNhbXBsZTEcMBoGA1UECxMTQVBJIE1lZGlhdGlvbiBMYXllcjE5MDcGA1UE AxMwWm93ZSBEZXZlbG9wbWVudCBJbnN0YW5jZXMgQ2VydGlmaWNhdGUgQXV0aG9y -aXR5MB4XDTE5MDExMTEyMTIwNVoXDTI5MDEwODEyMTIwNVowgZ4xCzAJBgNVBAYT +aXR5MB4XDTIwMTAyMDA3MzkyOVoXDTMwMTAxODA3MzkyOVowgZ4xCzAJBgNVBAYT AkNaMQ8wDQYDVQQIEwZQcmFndWUxDzANBgNVBAcTBlByYWd1ZTEUMBIGA1UEChML Wm93ZSBTYW1wbGUxHDAaBgNVBAsTE0FQSSBNZWRpYXRpb24gTGF5ZXIxOTA3BgNV BAMTMFpvd2UgRGV2ZWxvcG1lbnQgSW5zdGFuY2VzIENlcnRpZmljYXRlIEF1dGhv -cml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALyotswfS+sLTmwO -08ocbkNWPccRVWGWaP/LvfLe1USmhUOMO7E38ztTy8AJYBxrFTPr2lL3rXybRHCn -Lscz0XNvkNll6Yef71ghaLbpe0V12Jygw4J9BAbYdVIsrP+brR3pijGVO/ECvJwD -815ODsGU3Staw9HFlHO7dWss/TM2uz3Y6oVLObuhEWvAXiU3fW3PpFebRUlhLe5g -yprGSZDFQAJpiqD7Nac5uZB53ETSPI+Cyku2E5CPx3qDJh9ueiHyaqmtbhBXjOue -7rHU9F03zpldofqp4WDMnrl9ktzQDx+OHY5HI+gsaKV/MEX3YVrD+Rdc1GTc0JiI -OS2VBCsCAwEAAaM/MD0wDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQwHQYD -VR0OBBYEFPA6lVzMZhd6jkR4JClljOSWs0J1MA0GCSqGSIb3DQEBCwUAA4IBAQCt -onZY1WkhTXmBxIl6EW/IDmcXZeYgucw590I7iVVXDi53oCM16AIM6pniqMP/iku5 -2MX2JqGD//eEnJDt6q+qA4htJSb7lswjbC90xLkGAKAuDsC2cKGaoQAeTh5ouP7C -itN2+xVjZTfyAg3ZxmhXmVKVsv4rRpiAOYvX7R7ewNjpJkBeTQouind5rKtabzPD -0nHKF0u/Y8FaEwv8zFRffsnl0/3nqfnT6l0mvekDP+LhIKZI9TwIJYkP9PGraR50 -HgUnKdoaJuPVQfbiMzISRqXygfTdmVnY9CEP9/W2S4NgaLXI6AkNLEcLNvz/CKJg -TRqXQKkvunUCrHxi5oV+ ------END CERTIFICATE----- +cml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANHkJhhd/rrtmm4B +XCU/ZMq/4F8T3QYXGnDfmRLSN2GzGpb1YEK2RaEVBBKh8QI5baiD3vSzhK1VoO3L +qEMOpPxgwoUTz8wDzf4u18i7qSREdSDTJIo9Qj5DT8w4wHpGBpFtNVU/5bTwNAPw +khg5CdRJpiOQV3O4MFmnt94VLcMQnywISja2Mv+RC3eZjr86OepDLpyfi2UuQ/Us +hKvVvUM+Bxcl9TkWzFJ6lqYvVBPo5Epa3v8qIeOfmkOzO8id5LT/AWqgOYUGFhox +4Lsvj8txOc3SYTXbY9IOrKXggX5NwhTW038j+1n1zXlVeAr5xhASymAzwbV/QQ3l +GsWig1ECAwEAAaM/MD0wDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQwHQYD +VR0OBBYEFCRpLjbYx589Li1EfWKwGmQxiLA2MA0GCSqGSIb3DQEBCwUAA4IBAQCt +0YxLl4u7RZkntKSBjDiQXoFL6xkzvvoEAGtNztCVW78NHgA86MkuWmQ+eBSBxHda +NzjtLHHSwFfzHaaXoc/kNS2iTyHbntKheJ6YHi6mCA71nA5m+AUS3yV+iO5qFusc +jeYXXuwbP06i2v5J/yYtEyEARl2Wo9mOCOTOAl7e+V9qhYgRh1EbWO0pYTeRpya+ +MCHI+xEPSmUaguEtxvGTdtmhDuKuS1Ndo5j72ceevy0uP5el3scsJnB1puGhQCh1 +waG/jp8kndRbB3V3YjIqbA9MxxpMzpiOC5S0uQQ3t2sqV6p4q7Dj5o4GgfDu+RK3 +EDOis6zm74HV4CIcw9Ka +-----END CERTIFICATE----- diff --git a/keystore/local_ca/localca.keystore.p12 b/keystore/local_ca/localca.keystore.p12 index 8ed50760f51f91709c000992c39133f6f8fd4ff4..b8c7269aab7289e1f0a251f1ea1ae8d50e4c95ba 100644 GIT binary patch delta 2554 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 Qe^1Rm+Y$8y0s{etpge`g!2kdN delta 2554 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 Q_rvW}5ym4b0s{etpp-k+cmMzZ diff --git a/keystore/localhost/localhost-multi.keystore.p12 b/keystore/localhost/localhost-multi.keystore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..634bedfd87bc72206bec0b6f23840d327336693e GIT binary patch literal 7681 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