ui: Unix Domain Socket support (#10287)
This commit adds UI support for Unix Domain Sockets for upstream and downstreams (see #9981 and #10252)
This commit is contained in:
parent
7083c39b96
commit
f77615b872
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:feature
|
||||||
|
ui: Add Unix Domain Socket support
|
||||||
|
```
|
|
@ -62,6 +62,15 @@ as |item index|>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
{{else if item.Service.SocketPath}}
|
||||||
|
<dl class="socket" data-test-socket>
|
||||||
|
<dt {{tooltip}}>
|
||||||
|
Socket Path
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{{item.Service.SocketPath}}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<TagList @item={{item.Service}} />
|
<TagList @item={{item.Service}} />
|
||||||
</BlockSlot>
|
</BlockSlot>
|
||||||
|
|
|
@ -37,23 +37,53 @@
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (gt item.LocalBindPort 0)}}
|
{{#if item.LocalBindSocketPath}}
|
||||||
{{#let (concat (or item.LocalBindAddress '127.0.0.1') ':' item.LocalBindPort) as |combinedAddress|}}
|
{{#let (if item.LocalBindSocketMode
|
||||||
<dl class="local-bind-address">
|
(hash
|
||||||
<dt>
|
label=(concat '(Local bind mode)')
|
||||||
<span>
|
value=(concat '(Mode:' item.LocalBindSocketMode ')')
|
||||||
Address
|
)
|
||||||
</span>
|
(hash
|
||||||
</dt>
|
label=""
|
||||||
<dd>
|
value=""
|
||||||
<CopyButton
|
)
|
||||||
@value={{combinedAddress}}
|
)
|
||||||
@name="Address"
|
as |mode|}}
|
||||||
/>
|
<dl class="local-bind-socket">
|
||||||
{{combinedAddress}}
|
<dt>
|
||||||
</dd>
|
<span>
|
||||||
</dl>
|
Local bind socket {{mode.label}}
|
||||||
|
</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<CopyButton
|
||||||
|
@value={{item.LocalBindSocketPath}}
|
||||||
|
@name="Socket path"
|
||||||
|
/>
|
||||||
|
{{item.LocalBindSocketPath}}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
{{/let}}
|
{{/let}}
|
||||||
|
{{else}}
|
||||||
|
{{#if (gt item.LocalBindPort 0)}}
|
||||||
|
{{#let (concat (or item.LocalBindAddress '127.0.0.1') ':' item.LocalBindPort) as |combinedAddress|}}
|
||||||
|
<dl class="local-bind-address">
|
||||||
|
<dt>
|
||||||
|
<span>
|
||||||
|
Address
|
||||||
|
</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<CopyButton
|
||||||
|
@value={{combinedAddress}}
|
||||||
|
@name="Address"
|
||||||
|
/>
|
||||||
|
{{combinedAddress}}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{{/let}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -45,6 +45,7 @@ export default class ServiceInstance extends Model {
|
||||||
// If the ID is blank fallback to the Service.Service (the Name)
|
// If the ID is blank fallback to the Service.Service (the Name)
|
||||||
@or('Service.{ID,Service}') ID;
|
@or('Service.{ID,Service}') ID;
|
||||||
@or('Service.Address', 'Node.Service') Address;
|
@or('Service.Address', 'Node.Service') Address;
|
||||||
|
@attr('string') SocketPath;
|
||||||
|
|
||||||
@alias('Service.Tags') Tags;
|
@alias('Service.Tags') Tags;
|
||||||
@alias('Service.Meta') Meta;
|
@alias('Service.Meta') Meta;
|
||||||
|
|
|
@ -32,6 +32,9 @@
|
||||||
%icon-definition.address dt::before {
|
%icon-definition.address dt::before {
|
||||||
@extend %with-public-default-mask, %as-pseudo;
|
@extend %with-public-default-mask, %as-pseudo;
|
||||||
}
|
}
|
||||||
|
%icon-definition.socket dt::before {
|
||||||
|
@extend %with-port-mask, %as-pseudo;
|
||||||
|
}
|
||||||
%icon-definition.mesh dt::before {
|
%icon-definition.mesh dt::before {
|
||||||
@extend %with-mesh-mask, %as-pseudo;
|
@extend %with-mesh-mask, %as-pseudo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,9 @@ ${typeof location.search.ns !== 'undefined' ? `
|
||||||
"ServicePort": ${fake.random.number({min: 21000, max: 21255})},
|
"ServicePort": ${fake.random.number({min: 21000, max: 21255})},
|
||||||
"ServiceEnableTagOverride": false,
|
"ServiceEnableTagOverride": false,
|
||||||
"ServiceProxy": {
|
"ServiceProxy": {
|
||||||
|
"Config": {
|
||||||
|
"protocol": "http"
|
||||||
|
},
|
||||||
"Expose": {
|
"Expose": {
|
||||||
"Checks": true,
|
"Checks": true,
|
||||||
"Paths": [
|
"Paths": [
|
||||||
|
@ -50,15 +53,22 @@ ${range(env('CONSUL_EXPOSED_COUNT', 3)).map((i) => `
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Mode": "${fake.helpers.randomize(['', 'direct', 'transparent'])}",
|
"Mode": "${fake.helpers.randomize(['', 'direct', 'transparent'])}",
|
||||||
|
"TransparentProxy": {},
|
||||||
"DestinationServiceName": "${location.pathname.slice(4)}"
|
"DestinationServiceName": "${location.pathname.slice(4)}"
|
||||||
${ location.pathname.slice(4) === "service-0" ? `
|
${ location.pathname.slice(4) === "service-0" ? `
|
||||||
,
|
,
|
||||||
"DestinationServiceID": "${location.pathname.slice(4)}-with-id",
|
"DestinationServiceID": "${location.pathname.slice(4)}-with-id",
|
||||||
|
${ fake.random.number({min: 1, max: 10}) > 2 ? `
|
||||||
"LocalServiceAddress": "${fake.internet.ip()}",
|
"LocalServiceAddress": "${fake.internet.ip()}",
|
||||||
"LocalServicePort": ${fake.random.number({min: 0, max: 65535})}
|
"LocalServicePort": ${fake.random.number({min: 0, max: 65535})}
|
||||||
|
` : `
|
||||||
|
"LocalServiceSocketMode": "0600",
|
||||||
|
"LocalServiceSocketPath": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}"
|
||||||
|
` }
|
||||||
`
|
`
|
||||||
: ``}
|
: ``}
|
||||||
},
|
},
|
||||||
|
"ServiceSocketPath": "",
|
||||||
"ServiceProxyDestination": "${location.pathname.slice(4)}",
|
"ServiceProxyDestination": "${location.pathname.slice(4)}",
|
||||||
"ServiceWeights": {
|
"ServiceWeights": {
|
||||||
"Passing": 1,
|
"Passing": 1,
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
const proxy = service.indexOf('-proxy')
|
const proxy = service.indexOf('-proxy')
|
||||||
const sidecar = service.indexOf('-sidecar-proxy')
|
const sidecar = service.indexOf('-sidecar-proxy')
|
||||||
const id = (proxy !== -1 ? service.slice(0, -6) + '-with-id-proxy' : service + '-with-id');
|
const id = (proxy !== -1 ? service.slice(0, -6) + '-with-id-proxy' : service + '-with-id');
|
||||||
let kind = '';
|
let kind = '';
|
||||||
switch(true) {
|
switch(true) {
|
||||||
case service.endsWith('-mesh-gateway'):
|
case service.endsWith('-mesh-gateway'):
|
||||||
kind = 'mesh-gateway';
|
kind = 'mesh-gateway';
|
||||||
|
@ -71,21 +71,38 @@ ${typeof location.search.ns !== 'undefined' ? `
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"Weights": {
|
||||||
|
"Passing": 1,
|
||||||
|
"Warning": 1
|
||||||
|
},
|
||||||
${ fake.random.number({min: 1, max: 10}) > 2 ? `
|
${ fake.random.number({min: 1, max: 10}) > 2 ? `
|
||||||
"Meta": {
|
"Meta": {
|
||||||
"consul-dashboard-url": "${fake.internet.protocol()}://${fake.internet.domainName()}/?id={{Service}}",
|
"consul-dashboard-url": "${fake.internet.protocol()}://${fake.internet.domainName()}/?id={{Service}}",
|
||||||
"external-source": "${fake.helpers.randomize(['consul', 'nomad', 'terraform', 'kubernetes', 'aws', ''])}"
|
"external-source": "${fake.helpers.randomize(['consul', 'nomad', 'terraform', 'kubernetes', 'aws', ''])}"
|
||||||
},
|
},
|
||||||
` : `` }
|
` : `
|
||||||
|
"Meta": null,
|
||||||
|
` }
|
||||||
|
${ false ? `
|
||||||
"Address":"${fake.internet.ip()}",
|
"Address":"${fake.internet.ip()}",
|
||||||
"Port":${fake.random.number({min: 0, max: 65535})},
|
"Port":${fake.random.number({min: 0, max: 65535})},
|
||||||
|
` : `
|
||||||
|
"Address":"",
|
||||||
|
"SocketPath": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}",
|
||||||
|
` }
|
||||||
|
"Connect": {},
|
||||||
${kind !== '' ? `
|
${kind !== '' ? `
|
||||||
"Kind": "${kind}",
|
"Kind": "${kind}",
|
||||||
` : `` }
|
` : `` }
|
||||||
"Proxy": {
|
"Proxy": {
|
||||||
${proxy !== -1 && sidecar === -1 ? `
|
${proxy !== -1 && sidecar === -1 ? `
|
||||||
"DestinationServiceName": "${service.substr(0, proxy)}",
|
"DestinationServiceName": "${service.substr(0, proxy)}",
|
||||||
` : ``}
|
` : `
|
||||||
|
"Expose": {},
|
||||||
|
"MeshGateway": {},
|
||||||
|
"Mode": "",
|
||||||
|
"TransparentProxy": ""
|
||||||
|
`}
|
||||||
${sidecar !== -1 ? `
|
${sidecar !== -1 ? `
|
||||||
"DestinationServiceName": "${service.substr(0, sidecar)}",
|
"DestinationServiceName": "${service.substr(0, sidecar)}",
|
||||||
"DestinationServiceID": "${service.substr(0, sidecar)}-ID",
|
"DestinationServiceID": "${service.substr(0, sidecar)}-ID",
|
||||||
|
@ -113,8 +130,13 @@ ${range(env('CONSUL_EXPOSED_COUNT', 3)).map((i) => `
|
||||||
"DestinationName": "${fake.hacker.noun()}",
|
"DestinationName": "${fake.hacker.noun()}",
|
||||||
"DestinationNamespace": "${fake.hacker.noun()}",
|
"DestinationNamespace": "${fake.hacker.noun()}",
|
||||||
"DestinationType": "${fake.helpers.randomize(['service', 'prepared_query'])}",
|
"DestinationType": "${fake.helpers.randomize(['service', 'prepared_query'])}",
|
||||||
|
${ false ? `
|
||||||
"LocalBindAddress": "${fake.internet.ip()}",
|
"LocalBindAddress": "${fake.internet.ip()}",
|
||||||
"LocalBindPort": ${fake.random.number({min: 0, max: 65535})}
|
"LocalBindPort": ${fake.random.number({min: 0, max: 65535})}
|
||||||
|
` : `
|
||||||
|
"LocalBindSocketMode": "0600",
|
||||||
|
"LocalBindSocketPath": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}"
|
||||||
|
` }
|
||||||
}
|
}
|
||||||
`)}
|
`)}
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue