ããã«ã¡ã¯ãIngressãä»ããŠWSãå ¬éããŠããKubernetesã§å®è¡ããããšãããšãïŒ813ã§èª¬æããåé¡ãšåæ§ã®åé¡ãçºçããŸãã
WebSocket connection to 'ws://apicurio-ws.192.168.1.5.nip.io/ws/designs/2?uuid=68064b1e-f839-4973-b65e-89660d4a07d9&user=admin&secret=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJxRV9
COWQ4NFZS' failed: Error during WebSocket handshake: Unexpected response code: 404
distro / kubernetesã§kubernetesãããã§ã¹ããã¡ã€ã«ã䜿çšããŠããŸãã ãã¹ãŠã®ãµãŒãã¹ã®ãã¹ããå€æŽããã ãã§ãã
ïŒ813ã®æ å ±ã¯åœ¹ã«ç«ããªãã£ããšæããŸããïŒ ããã¯åãåé¡ã®ããã«èŠããŸãã ãã¶ã@ 0x218ã¯åœŒãã®ã€ã³ã¹ããŒã«ã®ããã«åããå€æŽã«ã€ããŠè©³ãã説æããããšãã§ããŸããïŒ ãŸãã¯ããããã@ t-rapã«ã¯ããã€ãã®èãããããŸããïŒ ç§ã®kubernetesã®å°éç¥èã¯éåžžã«éãããŠããŸãã
ã¯ããææ¡ãããNginx Ingress @ 0x218ã®VersionãUpgradeãConnectionããããŒãé©çšããŠã¿ãŸããã ããã§ããWebãœã±ããã«æ¥ç¶ã§ããŸããã§ããã
åé¡ãããã«ç解ããããã«æäŸã§ãããã°ã¯ãããŸããïŒ
-wsããããããå®å šãªããã©ãŠã¶ã³ã³ãœãŒã«åºåãšãµãŒããŒãã°ãæäŸã§ããå Žåã¯ãããã圹ç«ã€å¯èœæ§ããããŸãã
ãã©ãŠã¶ãã°ïŒ
[ApiEditorPageComponent] Attempting to reconnect to the server.
main.a117148be57ecc117ff5.js:1 [ApisService] Getting an API Design: http://apicurio.192.168.1.5.nip.io/studio-api/designs/2
main.a117148be57ecc117ff5.js:1 [ApisService] Editing API Design: http://apicurio.192.168.1.5.nip.io/studio-api/designs/2/session
main.a117148be57ecc117ff5.js:1 [ApisService] Editing Session UUID: 0d50ffc8-1f69-41b0-b1f0-6c80a1771e00
main.a117148be57ecc117ff5.js:1 [ApisService] Content Version: 3
main.a117148be57ecc117ff5.js:1 [ApiEditorPageComponent] Definition loaded. Opening editing session.
main.a117148be57ecc117ff5.js:1 [ApisService] Opening editing session on URL: ws://apicurio-ws.192.168.1.5.nip.io/ws/designs/2?uuid=0d50ffc8-1f69-41b0-b1f0-6c80a1771e00&user=admin&secret=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJCNlRDTFAxdkIz
main.a117148be57ecc117ff5.js:1 WebSocket connection to 'ws://apicurio-ws.192.168.1.5.nip.io/ws/designs/2?uuid=0d50ffc8-1f69-41b0-b1f0-6c80a1771e00&user=admin&secret=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJCNlRDTFAxdkIz' failed: Error during WebSocket handshake: Unexpected response code: 404
t.openEditingSession @ main.a117148be57ecc117ff5.js:1
(anonymous) @ main.a117148be57ecc117ff5.js:1
e.invoke @ polyfills.9c67d1be23abf75fea1a.js:1
onInvoke @ main.a117148be57ecc117ff5.js:1
e.invoke @ polyfills.9c67d1be23abf75fea1a.js:1
t.run @ polyfills.9c67d1be23abf75fea1a.js:1
(anonymous) @ polyfills.9c67d1be23abf75fea1a.js:1
e.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
onInvokeTask @ main.a117148be57ecc117ff5.js:1
e.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
t.runTask @ polyfills.9c67d1be23abf75fea1a.js:1
y @ polyfills.9c67d1be23abf75fea1a.js:1
t.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
_ @ polyfills.9c67d1be23abf75fea1a.js:1
m @ polyfills.9c67d1be23abf75fea1a.js:1
main.a117148be57ecc117ff5.js:1 [ApiEditingSession] WS connection to server CLOSED: CloseEvent {isTrusted: true, wasClean: false, code: 1006, reason: "", type: "close", âŠ}
main.a117148be57ecc117ff5.js:1 [ApiEditorPageComponent] **Notice** editing session DROPPED! Reason code: 1006
main.a117148be57ecc117ff5.js:1 [ApiEditorPageComponent] Attempting to reconnect to the server.
main.a117148be57ecc117ff5.js:1 [ApisService] Getting an API Design: http://apicurio.192.168.1.5.nip.io/studio-api/designs/2
main.a117148be57ecc117ff5.js:1 [ApisService] Editing API Design: http://apicurio.192.168.1.5.nip.io/studio-api/designs/2/session
main.a117148be57ecc117ff5.js:1 [ApisService] Editing Session UUID: 5eecf1e6-2a83-4940-bdb0-110240374093
main.a117148be57ecc117ff5.js:1 [ApisService] Content Version: 3
main.a117148be57ecc117ff5.js:1 [ApiEditorPageComponent] Definition loaded. Opening editing session.
main.a117148be57ecc117ff5.js:1 [ApisService] Opening editing session on URL: ws://apicurio-ws.192.168.1.5.nip.io/ws/designs/2?uuid=5eecf1e6-2a83-4940-bdb0-110240374093&user=admin&secret=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJCNlRDTFAxdkIz
main.a117148be57ecc117ff5.js:1 WebSocket connection to 'ws://apicurio-ws.192.168.1.5.nip.io/ws/designs/2?uuid=5eecf1e6-2a83-4940-bdb0-110240374093&user=admin&secret=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJCNlRDTFAxdkIz' failed: Error during WebSocket handshake: Unexpected response code: 404
t.openEditingSession @ main.a117148be57ecc117ff5.js:1
(anonymous) @ main.a117148be57ecc117ff5.js:1
e.invoke @ polyfills.9c67d1be23abf75fea1a.js:1
onInvoke @ main.a117148be57ecc117ff5.js:1
e.invoke @ polyfills.9c67d1be23abf75fea1a.js:1
t.run @ polyfills.9c67d1be23abf75fea1a.js:1
(anonymous) @ polyfills.9c67d1be23abf75fea1a.js:1
e.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
onInvokeTask @ main.a117148be57ecc117ff5.js:1
e.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
t.runTask @ polyfills.9c67d1be23abf75fea1a.js:1
y @ polyfills.9c67d1be23abf75fea1a.js:1
t.invokeTask @ polyfills.9c67d1be23abf75fea1a.js:1
_ @ polyfills.9c67d1be23abf75fea1a.js:1
m @ polyfills.9c67d1be23abf75fea1a.js:1
main.a117148be57ecc117ff5.js:1 [ApiEditingSession] WS connection to server CLOSED: CloseEvent {isTrusted: true, wasClean: false, code: 1006, reason: "", type: "close", âŠ}
main.a117148be57ecc117ff5.js:1 [ApiEditorPageComponent] **Notice** editing session DROPPED! Reason code: 1006
wsãããã®å®å šãªãã°ïŒ
06-10 14:46:08,780 DEBUG [io.undertow.request.security] (default task-1) Authentication result was ATTEMPTED for /ws/designs/2
2020-06-10 14:46:08,781 DEBUG [io.undertow.request] (default task-1) Matched default handler path /ws/designs/2
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread Status <== SCANNING
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread scanning
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Periodic recovery first pass at Wed, 10 Jun 2020 14:46:11
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) processing /StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction transactions
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.CommitMarkableResourceRecordRecoveryModule<strong i="6">@7e04aa62</strong>' first pass processed
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) AtomicActionRecoveryModule first pass
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) processing /StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction transactions
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule<strong i="7">@3b062bc6</strong>' first pass processed
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.txoj] (Periodic Recovery) TORecoveryModule - first pass
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.txoj.recovery.TORecoveryModule<strong i="8">@29e089e5</strong>' first pass processed
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule<strong i="9">@5f676b11</strong>' first pass processed
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change IDLE->FIRST_PASS
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) Local XARecoveryModule - first pass
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change FIRST_PASS->BETWEEN_PASSES
2020-06-10 14:46:11,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule<strong i="10">@5ad9faef</strong>' first pass processed
2020-06-10 14:46:20,674 DEBUG [io.undertow.request] (default I/O-2) Matched default handler path /ws/designs/2
2020-06-10 14:46:20,675 DEBUG [io.undertow.request.security] (default task-1) Attempting to authenticate /ws/designs/2, authentication required: false
2020-06-10 14:46:20,675 DEBUG [io.undertow.request.security] (default task-1) Authentication outcome was NOT_ATTEMPTED with method io.undertow.security.impl.CachedAuthenticatedSessionMechanism<strong i="11">@59a16760</strong> for /ws/designs/2
2020-06-10 14:46:20,675 DEBUG [io.undertow.request.security] (default task-1) Authentication result was ATTEMPTED for /ws/designs/2
2020-06-10 14:46:20,675 DEBUG [io.undertow.request] (default task-1) Matched default handler path /ws/designs/2
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Periodic recovery second pass at Wed, 10 Jun 2020 14:46:21
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.CommitMarkableResourceRecordRecoveryModule<strong i="12">@7e04aa62</strong>' second pass processed
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) AtomicActionRecoveryModule second pass
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule<strong i="13">@3b062bc6</strong>' second pass processed
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.txoj] (Periodic Recovery) TORecoveryModule - second pass
2020-06-10 14:46:21,291 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.txoj.recovery.TORecoveryModule<strong i="14">@29e089e5</strong>' second pass processed
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule<strong i="15">@5f676b11</strong>' second pass processed
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change BETWEEN_PASSES->SECOND_PASS
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) Local XARecoveryModule - second pass
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) Local XARecoveryModule.transactionInitiatedRecovery completed
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) Local XARecoveryModule.resourceInitiatedRecovery completed
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change SECOND_PASS->IDLE
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule<strong i="16">@5ad9faef</strong>' second pass processed
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread Status <== INACTIVE
2020-06-10 14:46:21,292 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread backing off
ç·ç§ã¯ããã§ã¯ãäœãããŸããããªãã®ãåãããŸããã -wsããããš-apiããããåãããŒã¿ããŒã¹ã«æ¥ç¶ãããŠããããšã確èªããŠãã ããã ããã§ãªãå Žåã¯æ¥ç¶ãšã©ãŒãçºçããŸããããã®å Žåã¯-wsããããã°ã«ãšã©ãŒã衚瀺ããã404ã¯çºçããªããšæããŸãã
ããçš®ã®Ingressã®åé¡ã§ããã«éããªãããã§ãããk8sã«ã€ããŠååãªç¥èããããŸããã :(
ãŸããNodePortãä»ããŠwsããããçŽæ¥å ¬éããããšããŸããã ããã§ãç§ã¯ãŸã æåããŸããã§ããã
ããäžåºŠããçŽããŸãã ãã°ã¬ãã«ãäžããããšã¯åœ¹ã«ç«ã¡ãŸããïŒ
çãã¯ãããŸããã§ããã -wsã³ã³ããŒãã³ãã§ã¯èªèšŒãæå¹ã«ãªã£ãŠããªãããã-wsãã°ã«èªèšŒã«é¢ããäœãããããŸããããç§ã«ã¯ããããããŸããã§ããã ãã¶ãããã°ã¬ãã«ãäžãããšããããããã«æããã«ãªãã§ãããã
ãã°ã¬ãã«ãã©ã®ã¬ãã«ã«äžããå¿ èŠããããšæããŸããïŒ
ããããDEBUGããå§ããŠãäœãèµ·ããããèŠãŠãã ããã :)
ãããã°ãããã°ã¬ãã«ãå¢ãããŸããã ããããæçãªãã°ã¯ãããŸããã
ws
cloak.adapters.OAuthRequestAuthenticator] (default task-2) there was no code
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-2) redirecting to auth server
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.undertow.ServletSessionTokenStore] (default task-3) session was null, returning null
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-3) there was no code
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-3) redirecting to auth server
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-2) callback uri: http://apicurio-studio-ui.192.168.1.5.nip.io/version.js
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-3) callback uri: http://apicurio-studio-ui.192.168.1.5.nip.io/config.js
2020-06-13 22:20:10,628 DEBUG [io.undertow.request.security] (default task-2) Authentication outcome was NOT_ATTEMPTED with method org.keycloak.adapters.wildfly.WildflyAuthenticationMechanism<strong i="7">@26c8577b</strong> for /version.js
2020-06-13 22:20:10,628 DEBUG [io.undertow.request.security] (default task-2) Authentication result was ATTEMPTED for /version.js
2020-06-13 22:20:10,628 DEBUG [io.undertow.request.security] (default task-3) Authentication outcome was NOT_ATTEMPTED with method org.keycloak.adapters.wildfly.WildflyAuthenticationMechanism<strong i="8">@26c8577b</strong> for /config.js
2020-06-13 22:20:10,628 DEBUG [io.undertow.request.security] (default task-3) Sending authentication challenge for HttpServerExchange{ GET /config.js}
2020-06-13 22:20:10,628 DEBUG [io.undertow.request] (default task-2) Matched default handler path /version.js
2020-06-13 22:20:10,628 DEBUG [org.keycloak.adapters.AuthenticatedActionsHandler] (default task-2) AuthenticatedActionsValve.invoke http://apicurio-studio-ui.192.168.1.5.nip.io/version.js
2020-06-13 22:20:10,629 DEBUG [org.keycloak.adapters.AuthenticatedActionsHandler] (default task-2) Policy enforcement is disabled.
2020-06-13 22:20:10,629 DEBUG [io.undertow.session] (default task-3) Created session with id oIOfXf1RPvC2PBpI4dTuVZKYk7f8BDg0XUAFHWrC for exchange HttpServerExchange{ GET /config.js}
2020-06-13 22:20:10,629 DEBUG [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-3) Sending redirect to login page: http://keycloak-microcks.192.168.1.5.nip.io/auth/realms/Apicurio/protocol/openid-connect/auth?response_type=code&client_id=apicurio-studio&redirect_uri=http%3A%2F%2Fapicurio-studio-ui.192.168.1.5.nip.io%2Fconfig.js&state=3e4e092e-bc54-4802-a517-d3462de6f343&login=true&scope=openid
2020-06-13 22:20:10,629 DEBUG [io.undertow.request.security] (default task-3) Authentication result was CHALLENGE_SENT for /config.js
2020-06-13 22:21:00,918 DEBUG [io.undertow.request] (default I/O-2) Timing out idle connection from /10.1.94.1:41180
2020-06-13 22:21:00,918 DEBUG [io.undertow.request] (default I/O-2) Timing out idle connection from /10.1.94.1:41178
2020-06-13 22:21:48,749 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread Status <== SCANNING
2020-06-13 22:21:48,749 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) PeriodicRecovery: background thread scanning
2020-06-13 22:21:48,749 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Periodic recovery first pass at Sat, 13 Jun 2020 22:21:48
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) processing /StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction transactions
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.CommitMarkableResourceRecordRecoveryModule<strong i="9">@3bc2db45</strong>' first pass processed
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) AtomicActionRecoveryModule first pass
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) processing /StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction transactions
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule<strong i="10">@7ec04259</strong>' first pass processed
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.txoj] (Periodic Recovery) TORecoveryModule - first pass
2020-06-13 22:21:48,750 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.txoj.recovery.TORecoveryModule<strong i="11">@1a9ffeac</strong>' first pass processed
2020-06-13 22:21:48,751 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.SubordinateAtomicActionRecoveryModule<strong i="12">@1aa1c748</strong>' first pass processed
2020-06-13 22:21:48,751 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change IDLE->FIRST_PASS
2020-06-13 22:21:48,751 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) Local XARecoveryModule - first pass
2020-06-13 22:21:48,751 DEBUG [com.arjuna.ats.jta] (Periodic Recovery) XARecoveryModule state change FIRST_PASS->BETWEEN_PASSES
2020-06-13 22:21:48,751 DEBUG [com.arjuna.ats.arjuna] (Periodic Recovery) Recovery module 'com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule<strong i="13">@5b07f3c7</strong>' first pass processed
ããããåé¡ã説æããŠããå¯èœæ§ã®ãããã©ãŠã¶ãã°ã«æ°ã¥ããŸããã
main.a117148âŠ.js:1 [ApiEditingSession] WS connection to server CLOSED:
CloseEvent {isTrusted: true, wasClean: false, code: 1006, reason: "", type: "close", âŠ}
bubbles: false
cancelBubble: false
cancelable: false
code: 1006
composed: false
currentTarget: WebSocket {__zone_symbol__openfalse: Array(1), __zone_symbol__messagefalse: Array(1), __zone_symbol__ON_PROPERTYopen: Æ, __zone_symbol__ON_PROPERTYmessage: Æ, __zone_symbol__ON_PROPERTYclose: Æ, âŠ}
defaultPrevented: false
eventPhase: 0
isTrusted: true
path: []
reason: ""
returnValue: true
srcElement: WebSocket {__zone_symbol__openfalse: Array(1), __zone_symbol__messagefalse: Array(1), __zone_symbol__ON_PROPERTYopen: Æ, __zone_symbol__ON_PROPERTYmessage: Æ, __zone_symbol__ON_PROPERTYclose: Æ, âŠ}
target: WebSocket {__zone_symbol__openfalse: Array(1), __zone_symbol__messagefalse: Array(1), __zone_symbol__ON_PROPERTYopen: Æ, __zone_symbol__ON_PROPERTYmessage: Æ, __zone_symbol__ON_PROPERTYclose: Æ, âŠ}
timeStamp: 1177278.1400000094
type: "close"
wasClean: false
__proto__: CloseEvent
Webãœã±ããã·ãŒãºã³ã¯ãšã©ãŒã³ãŒã1006ã§çµäºããŠããŸã
å«ãããµãŒããŒãã°ã¯ãå®éã«ã¯-ui
ãããã®ãã°ã§ããã -ws
ãããã®ãã°ã§ã¯ãããŸããã
ãšã©ãŒã³ãŒã1006ã¯ãWebãœã±ããããã©ãŠã¶ã«ãã£ãŠç°åžžã«éããããããšãæå³ããŸãã :(ãããŠæ²ããããšã«ããã©ãŠã¶ã¯ããããããªãã«çç±ãäžããªãã§ããããããã«ããã€ãã®æ å ±ããããŸãïŒ
ããããè©Šãããšãã§ããã®ã¯ãããçš®ã®WebSocketãã¹ãããŒã«ãèŠã€ããŠããã䜿ãããšããããšã§ãã 䜿çšã§ãã蚺ææ å ±ãåŸãããå ŽåããããŸãã
次ã®ã³ãã³ãã§ååŸããããã°
kubectl logs apicurio-studio-ws-7c458cf8d8-cgscc
æ€çŽ¢ã§ããç¹å®ã®ãã°ã¯ãããŸããïŒ
Webãœã±ããããã¹ãããããã®æšå¥šäºé ã¯ãããŸããïŒ
https://websocket.org/echo.html
ãä»ããŠWebãœã±ããããã¹ãããæ¹æ³ãèŠã€ããŸããã
wsæ¥ç¶ã³ãŒããã³ã³ãã¥ãŒã¿ãŒã«ã³ããŒããŸããã ã©ã®ãããªã¡ãã»ãŒãžãéä¿¡ããå¿ èŠããããŸããïŒ
äžèšã§æçš¿ããåºåã«ã¯ãkeycloakèªèšŒãªãã€ã¬ã¯ãããã®ä»ã®keycloaké¢é£ã®åºåãããã³config.js
ãšversion.js
ã®ãªã¯ãšã¹ããæ確ã«ç€ºãããŠãããããããã¯æ¬åœã«å¥åŠãªããšã§ãããããã¯ãã¹ãŠUIãè¡ãããšã§ãã WebSocketã³ã³ããŒãã³ãã«ã¯ãKeycloakããŸã£ããå«ãŸããŠããŸããã 3ã€ã®ããããã¹ãŠãããã°åºåãååŸã§ããŸããïŒ ããã¯é¢çœãã§ãããã ããããããããã«å®éã«åé¡ããããŸãïŒ
Webãœã±ããã®ãã¹ãã«ã€ããŠã æ¥ç¶ããŠã¿ãŠãäœãèµ·ãããã確èªããŠãã ããã ãããæ©èœããŠããå Žåã¯ã次ã®ãããªãã®ãååŸããå¿ èŠããããŸãã
ãæ¥ç¶ã段éã§æ¥ç¶ãåæãããå Žåããã®æåã®æ¥ç¶ã¯ãããã倱æããŸãã
websocket.orgã§æäŸãããŠããã³ãŒããã³ããŒããŠwebsocketããã¹ãããããŒããã©ã€ãã«websocket.htmlãšããŠä¿åããŠãããŒã«ã«ãããã¯ãŒã¯ã§wsãããããã¹ãããŸããã æ®å¿µãªãããããŒã«ã«ãããã¯ãŒã¯ã®wsã«æ¥ç¶ã§ããŸããã§ããã ãã ãããããªãã¯WebSocketãæ¥ç¶ããããšã¯ã§ããŸãã
wss://studio-ws.apicur.io/designs
ã ãããã£ãŠãWebSocketãã¹ãã¯å®è¡å¯èœã§ãããšæããŸãã
æ·»ä»ãã¡ã€ã«ã«ãã¹ãŠã®ãã°ãæäŸããŸãã
kubectlãã°apicurio-studio-ui-5c6f5df485-lcdxp> apicurio-studio-ui.log
kubectlãã°apicurio-studio-ws-77dc7f7b87-57dcs> apicurio-studio-ws.log
kubectlãã°apicurio-studio-api-79d9d799cb-mgsmx> apicurio-studio-api.log
apicurio-studio-api.log
apicurio-studio-ui.log
apicurio-studio-ws.log
ç§ã¯ã€ãã«ãããæ©èœãããŸããïŒ NodePortãä»ããŠws
ããããçŽæ¥å
¬éããŸããã åé¡ã¯å
¥åæ§æã«ãããšç¢ºä¿¡ããŠããŸãã
çŽ æŽãããïŒïŒ ãããæŒãé²ããŠãããŠããããšãïŒãããããªãã§ïŒã ãããŠç³ãèš³ãããŸããããç§ã¯ãã以äžã®å©ãã«ãªãããšãã§ããŸããã§ããã ç§ã®kubernetesã®ç¥èã¬ãã«ã¯äœãã§ãã åäœãããããã«è¿œå ããå¿ èŠã®ããYAMLæ§æãæçš¿ã§ããŸããïŒ æçµçã«ã¯ApicurioStudioã®ãªãã¬ãŒã¿ãŒãäœæããäºå®ã§ãããããããã€çºçãããã¯æ£ç¢ºã«ã¯ããããŸããã
æ£çŽãªãšãããç§ã¯ç¹å®ã®yamlæ§æãäœæããŸããã§ããã
NodePortãµãŒãã¹ãäœæããŸããããã¯ãws pods8080ããŒããã©ã³ãã ããŒãã®ãã·ã³IPã«å ¬éãããããšãæå³ããŸãã
ãããç§ãNodePortãäœæããæ¹æ³ã§ã
kubectl expose deployment apicurio-studio-ws --type NodePort --name test
ããã«ããããã·ã³IPïŒ32204ãä»ããŠã¢ã¯ã»ã¹ã§ãã32204ã®ã©ã³ãã ããŒããåŸãããŸããã
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test NodePort 10.152.183.2 <none> 8080:32204/TCP 10h
NodePortããŒãã¯ã©ã³ãã ã§ããã apicurio-configmap.yaml
ã§äºåã«æ§æã§ããªããããingresnginxãWebSocketãå
¬éããããã®æšå¥šãããæ¹æ³ã§ãããšç§ã¯ãŸã èããŠããŸãã
ç§ã®å Žåã¯ã©ã¡ãã§ãã
apicurio-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: apicurio-configmap
data:
apicurio-db-connection-url: jdbc:mysql://apicuriodb:3306/apicuriodb
apicurio-kc-client-id: apicurio-studio
apicurio-kc-realm: Apicurio
apicurio-microcks-api-url: http://microcks-microcks.192.168.1.5.nip.io/api
apicurio-microcks-client-id: microcks-serviceaccount
apicurio-ui-editing-url: ws://192.168.1.5:32204/
apicurio-ui-feature-microcks: "true"
apicurio-ui-feature-share-with-everyone: "true"
apicurio-ui-hub-api-url: http://apicurio.192.168.1.5.nip.io/studio-api
apicurio-ui-logout-redirect-uri: /
keycloak-url: http://keycloak-microcks.192.168.1.5.nip.io/auth
OKããšãŠãèå³æ·±ãã ãªãnginxã¢ãããŒããããŸããããªãã£ãã®ãåãããŸããã :(ããããäœããæ©èœããŠãããŠããããã§ãïŒ
å ¥åãä»ããŠwsããããå ¬éããæ¹æ³ãèŠã€ããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¯ããã«æ§æå¯èœã§ãã
ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãå ¥åãä»ããŠWSãããçšã«å¥ã®URLãäœæããŸããã
è©äŸ¡çšã®PRãæäŸããŸãã
ãããããŒãã£ãŒã«é ããŠãã¿ãŸããã
@cemnuraã©ã®ã€ã³ã°ã¬ã¹ã䜿çšããŠããŠãã©ã®ããŒãžã§ã³ã§äœ¿çšããŠããŸããïŒ
nginx-ingress-controllerã䜿çšããå Žåã¯ãå€ãã®ä¿®æ£ãšå€æŽãå ããããŠããŸãã
ããã«ã€ããŠå¥åŠãªããšã®1ã€ã¯ãç¹ã«http / httpsãåãæ¿ããããšãããšãã®WebSocketã®åäœã§ãã
@EricWittmannå¿ èŠã«å¿ããŠãããããé©çšãããããŒãžã§ã³ãæ©èœãããã©ããããã¹ãã§ããŸãïŒnginx-ingress-ããŒãžã§ã³ãææ°ã®ãã®ã«æŽæ°ãããŸãïŒã
ããªããæäŸã§ããã©ããªå©ãã§ããããããã§ãã@ t-rap
Helllo @ t-rapç§ãç解ããŠããéãã nginx-ingress-controller-amd64
ã䜿çšããmicrok8sKubernetesãå®è¡ããŠããŸãã
Name: nginx-ingress-microk8s-controller-nd8vb
Namespace: ingress
Priority: 0
Node: mccloud/192.168.1.5
Start Time: Tue, 02 Jun 2020 23:12:28 +0300
Labels: controller-revision-hash=59cb5dd586
name=nginx-ingress-microk8s
pod-template-generation=1
Annotations: <none>
Status: Running
IP: 192.168.1.5
IPs:
IP: 192.168.1.5
Controlled By: DaemonSet/nginx-ingress-microk8s-controller
Containers:
nginx-ingress-microk8s:
Container ID: containerd://3219d168e8fbb190acd214ab651f781f6adf51adcc2302891636a5ff250ef15f
Image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller-amd64:0.25.1
Image ID: sha256:2b8ed1f2046d4b37c18cca2ecc4f435b6618d2d198c0c8bf617954e863cc5832
Ports: 80/TCP, 443/TCP
Host Ports: 80/TCP, 443/TCP
Args:
/nginx-ingress-controller
--configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf
--publish-status-address=127.0.0.1
State: Running
Started: Fri, 12 Jun 2020 15:08:07 +0300
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 10 Jun 2020 23:37:02 +0300
Finished: Fri, 12 Jun 2020 15:08:03 +0300
Ready: True
Restart Count: 187
Liveness: http-get http://:10254/healthz delay=30s timeout=5s period=10s #success=1 #failure=3
Environment:
POD_NAME: nginx-ingress-microk8s-controller-nd8vb (v1:metadata.name)
POD_NAMESPACE: ingress (v1:metadata.namespace)
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from nginx-ingress-microk8s-serviceaccount-token-r6md6 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
nginx-ingress-microk8s-serviceaccount-token-r6md6:
Type: Secret (a volume populated by a Secret)
SecretName: nginx-ingress-microk8s-serviceaccount-token-r6md6
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/disk-pressure:NoSchedule
node.kubernetes.io/memory-pressure:NoSchedule
node.kubernetes.io/network-unavailable:NoSchedule
node.kubernetes.io/not-ready:NoExecute
node.kubernetes.io/pid-pressure:NoSchedule
node.kubernetes.io/unreachable:NoExecute
node.kubernetes.io/unschedulable:NoSchedule
Events: <none>
ã©ããããããšãããããŸãã@cemnura
ç§ãäœã£ããã©ãŒã¯ããã¹ãã§ããŸããïŒä»¥äžãåç
§ïŒïŒ äºåã«ïŒããäžåºŠïŒããããšã:)
https://github.com/t-rap/apicurio-studio-981/ã§ingress-nginx-controllerããŒãžã§ã³0.24.1ãšapicurio-studio0.2.44.Finalã䜿çšããŠæ§æããã¹ãããŸãã
ãµããã¹ã/ designsããingressapicurio-studio-wsã«è¿œå ããŸãããããã¯ãwsã§åŠçããå¿
èŠããããµããã¹ã§ããããã§ãã
ingress-controller0.25.1ãšapicurio-studio0.2.46ã§ããã€ãã®ãã¹ããå®è¡ããŸããæçµçã«ã¯ããããé±æ«ã«ãªããŸãã
å
¥åã³ã³ãããŒã©ãŒã¯kubernetesã«ãã£ãŠç®¡çãããŠãããããèªèãã¹ãå€æŽããããããããŸãã
ããå¿ èŠãªãã®ã§ãæ§æã¹ãããããåé€ããŸããïŒç§ã®æªããåœããåïŒ
çµãã£ããæŽæ°ããŸãã
@ t-rapãè©ŠããŠã¿ãŸãð
æäŸãããŠããKubernetesãããã§ã¹ã@ t-rapã䜿çšããŠã ui
ããããšåãURLã§ws
ããããå
¬éããããšãã§ããŸããã
ãã ããããã€ãã®å°ããªå€æŽããããŸãã
wspodã®å
¥ååãapicurio-studio-ws
ã«å€æŽããŸãã
apicurio-ui-editing-url
ããŒã®apicurio-configmap.yaml
ã®/ws
ãµãã£ãã¯ã¹ãåé€ããŸãã
apicurio-studio-ingresses.yaml
ã®å
¥åæ§æã®/ws
ãã¹ãåé€ããŸãã
ãããç§ã®æ§æã§ã
apicurio-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: apicurio-configmap
data:
apicurio-db-connection-url: jdbc:mysql://apicuriodb:3306/apicuriodb
apicurio-kc-client-id: apicurio-studio
apicurio-kc-realm: Apicurio
apicurio-microcks-api-url: http://microcks-microcks.192.168.1.5.nip.io/api
apicurio-microcks-client-id: microcks-serviceaccount
apicurio-ui-editing-url: ws://apicurio.192.168.1.5.nip.io
apicurio-ui-feature-microcks: "true"
apicurio-ui-feature-share-with-everyone: "true"
apicurio-ui-hub-api-url: http://apicurio.192.168.1.5.nip.io/studio-api
apicurio-ui-logout-redirect-uri: /
keycloak-url: http://keycloak-microcks.192.168.1.5.nip.io/auth
apicurio-studio-ingresses.yaml
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: apicurio-studio-api
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
labels:
module: apicurio-studio-api
spec:
rules:
- host: apicurio.192.168.1.5.nip.io
http:
paths:
- backend:
serviceName: "apicurio-studio-api"
servicePort: 8091
path: /studio-api/?(.*)
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: apicurio-studio-ui
labels:
module: apicurio-studio-ui
spec:
rules:
- host: apicurio.192.168.1.5.nip.io
http:
paths:
- backend:
serviceName: "apicurio-studio-ui"
servicePort: 8093
path: /
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: apicurio-studio-ws
annotations:
labels:
module: apicurio-studio-ws
spec:
rules:
- host: apicurio.192.168.1.5.nip.io
http:
paths:
- backend:
serviceName: "apicurio-studio-ws"
servicePort: 8092
path: /designs
çŽ æŽããããã¥ãŒã¹ïŒ ãããã®å€æŽã«ã¯å¥ã®PRãå¿ èŠã ãšæããŸããïŒ @ t-rapãš@jsenkoã¯ã©ãæããŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
çŽ æŽããããã¥ãŒã¹ïŒ ãããã®å€æŽã«ã¯å¥ã®PRãå¿ èŠã ãšæããŸããïŒ @ t-rapãš@jsenkoã¯ã©ãæããŸããïŒ