fix: grpc

This commit is contained in:
Andras Bacsai 2023-01-17 11:51:53 +01:00
parent e98a8ba599
commit 9b5efab8f8
3 changed files with 49 additions and 37 deletions

View File

@ -3,8 +3,30 @@ import { errorHandler, getDomain, isDev, prisma, executeCommand } from '../../..
import { getTemplates } from '../../../lib/services';
import { OnlyId } from '../../../types';
function generateServices(serviceId, containerId, port, isHttp2 = false) {
const payload = {
function generateServices(serviceId, containerId, port, isHttp2 = false, isHttps = false) {
if (isHttp2) {
return {
[serviceId]: {
loadbalancer: {
servers: [
{
url: `${isHttps ? 'https' : 'http'}://${containerId}:${port}`
}
]
}
},
[`${serviceId}-http2`]: {
loadbalancer: {
servers: [
{
url: `h2c://${containerId}:${port}`
}
]
}
}
};
}
return {
[serviceId]: {
loadbalancer: {
servers: [
@ -15,18 +37,6 @@ function generateServices(serviceId, containerId, port, isHttp2 = false) {
}
}
};
if (isHttp2) {
payload[`${serviceId}-http2`] = {
loadbalancer: {
servers: [
{
url: `h2c://${containerId}:${port}`
}
]
}
};
}
return payload;
}
function generateRouters(
serviceId,
@ -167,6 +177,7 @@ function generateRouters(
service: `${serviceId}-http2`,
rule: `${rule} && HeadersRegexp(\`Content-Type\`, \`application/grpc*\`)`
};
let https2WWW = {
...httpsWWW,
service: `${serviceId}-http2`,
@ -436,7 +447,7 @@ export async function proxyConfiguration(request: FastifyRequest<OnlyId>, remote
};
traefik.http.services = {
...traefik.http.services,
...generateServices(serviceId, id, port, isHttp2)
...generateServices(serviceId, id, port, isHttp2, isHttps)
};
if (previews) {
const { stdout } = await executeCommand({

View File

@ -717,7 +717,7 @@
{/if}
</div>
</div>
<div class="grid grid-cols-2 items-center pb-4">
<div class="grid grid-cols-2 items-center">
<Setting
id="dualCerts"
dataTooltip="Must be stopped to modify."
@ -729,16 +729,6 @@
on:click={() => !isDisabled && changeSettings('dualCerts')}
/>
</div>
<div class="grid grid-cols-2 items-center pb-4">
<Setting
id="isHttp2"
isCenter={false}
bind:setting={isHttp2}
title="Enable h2c (HTTP/2 without TLS)"
description="Enable h2c protocol. <br><br>HTTP/2 is a major revision of the HTTP network protocol used by the World Wide Web that allows faster web page loading by reducing the number of requests needed to load a web page. <br><br>Useful for gRPC and other HTTP/2 based services."
on:click={() => changeSettings('isHttp2')}
/>
</div>
{#if isHttps && application.buildPack !== 'compose'}
<div class="grid grid-cols-2 items-center pb-4">
<Setting
@ -751,6 +741,16 @@
/>
</div>
{/if}
<div class="grid grid-cols-2 items-center pb-4">
<Setting
id="isHttp2"
isCenter={false}
bind:setting={isHttp2}
title="Enable HTTP/2 protocol?"
description="Enable HTTP/2 protocol. <br><br>HTTP/2 is a major revision of the HTTP network protocol used by the World Wide Web that allows faster web page loading by reducing the number of requests needed to load a web page.<br><br>Useful for gRPC and other HTTP/2 based services."
on:click={() => changeSettings('isHttp2')}
/>
</div>
{/if}
</div>
{#if isSimpleDockerfile}

View File

@ -739,7 +739,7 @@
{/if}
</div>
</div>
<div class="grid grid-cols-2 items-center pb-4">
<div class="grid grid-cols-2 items-center">
<Setting
id="dualCerts"
dataTooltip={$t('forms.must_be_stopped_to_modify')}
@ -751,16 +751,7 @@
on:click={() => !isDisabled && changeSettings('dualCerts')}
/>
</div>
<div class="grid grid-cols-2 items-center pb-4">
<Setting
id="isHttp2"
isCenter={false}
bind:setting={isHttp2}
title="Enable h2c (HTTP/2 without TLS)"
description="Enable h2c protocol. <br><br>HTTP/2 is a major revision of the HTTP network protocol used by the World Wide Web that allows faster web page loading by reducing the number of requests needed to load a web page.<br><br>Useful for gRPC and other HTTP/2 based services."
on:click={() => changeSettings('isHttp2')}
/>
</div>
{#if isHttps && application.buildPack !== 'compose'}
<div class="grid grid-cols-2 items-center pb-4">
<Setting
@ -773,6 +764,16 @@
/>
</div>
{/if}
<div class="grid grid-cols-2 items-center pb-4">
<Setting
id="isHttp2"
isCenter={false}
bind:setting={isHttp2}
title="Enable HTTP/2 protocol?"
description="Enable HTTP/2 protocol. <br><br>HTTP/2 is a major revision of the HTTP network protocol used by the World Wide Web that allows faster web page loading by reducing the number of requests needed to load a web page.<br><br>Useful for gRPC and other HTTP/2 based services."
on:click={() => changeSettings('isHttp2')}
/>
</div>
{/if}
</div>
{#if isSimpleDockerfile}