Skip to content

Commit 917258d

Browse files
dotansimhan1ru4l
authored andcommitted
fix(deployment): upgrade contour to latest version (1.33) and update chart url (#7947)
1 parent 450314b commit 917258d

3 files changed

Lines changed: 37 additions & 265 deletions

File tree

deployment/generate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async function generateVectorDevTypes() {
3232
}
3333

3434
async function generateContourTypes() {
35-
const helmValuesFileUrl = `https://raw.githubusercontent.com/bitnami/charts/contour/${CONTOUR_CHART.version}/bitnami/contour/values.yaml`;
35+
const helmValuesFileUrl = `https://raw.githubusercontent.com/projectcontour/helm-charts/refs/tags/contour-${CONTOUR_CHART.version}/charts/contour/values.yaml`;
3636
const valuesFile = await fetch(helmValuesFileUrl).then(r => r.text());
3737

3838
const valuesTempFile = fileSync();

deployment/utils/contour.types.ts

Lines changed: 31 additions & 211 deletions
Original file line numberDiff line numberDiff line change
@@ -263,168 +263,6 @@ export interface ContourValues {
263263
};
264264
[k: string]: unknown;
265265
};
266-
defaultBackend?: {
267-
affinity?: {
268-
[k: string]: unknown;
269-
};
270-
args?: unknown[];
271-
command?: unknown[];
272-
containerPorts?: {
273-
http?: number;
274-
[k: string]: unknown;
275-
};
276-
containerSecurityContext?: {
277-
allowPrivilegeEscalation?: boolean;
278-
capabilities?: {
279-
drop?: string[];
280-
[k: string]: unknown;
281-
};
282-
enabled?: boolean;
283-
privileged?: boolean;
284-
readOnlyRootFilesystem?: boolean;
285-
runAsGroup?: number;
286-
runAsNonRoot?: boolean;
287-
runAsUser?: number;
288-
seLinuxOptions?: {
289-
[k: string]: unknown;
290-
};
291-
seccompProfile?: {
292-
type?: string;
293-
[k: string]: unknown;
294-
};
295-
[k: string]: unknown;
296-
};
297-
customLivenessProbe?: {
298-
[k: string]: unknown;
299-
};
300-
customReadinessProbe?: {
301-
[k: string]: unknown;
302-
};
303-
customStartupProbe?: {
304-
[k: string]: unknown;
305-
};
306-
enabled?: boolean;
307-
extraArgs?: {
308-
[k: string]: unknown;
309-
};
310-
extraEnvVars?: unknown[];
311-
extraEnvVarsCM?: string;
312-
extraEnvVarsSecret?: string;
313-
extraVolumeMounts?: unknown[];
314-
extraVolumes?: unknown[];
315-
hostAliases?: unknown[];
316-
image?: {
317-
digest?: string;
318-
pullPolicy?: string;
319-
pullSecrets?: unknown[];
320-
registry?: string;
321-
repository?: string;
322-
tag?: string;
323-
[k: string]: unknown;
324-
};
325-
initContainers?: unknown[];
326-
lifecycleHooks?: {
327-
[k: string]: unknown;
328-
};
329-
livenessProbe?: {
330-
enabled?: boolean;
331-
failureThreshold?: number;
332-
initialDelaySeconds?: number;
333-
periodSeconds?: number;
334-
successThreshold?: number;
335-
timeoutSeconds?: number;
336-
[k: string]: unknown;
337-
};
338-
networkPolicy?: {
339-
allowExternal?: boolean;
340-
allowExternalEgress?: boolean;
341-
enabled?: boolean;
342-
extraEgress?: unknown[];
343-
extraIngress?: unknown[];
344-
ingressNSMatchLabels?: {
345-
[k: string]: unknown;
346-
};
347-
ingressNSPodMatchLabels?: {
348-
[k: string]: unknown;
349-
};
350-
[k: string]: unknown;
351-
};
352-
nodeAffinityPreset?: {
353-
key?: string;
354-
type?: string;
355-
values?: unknown[];
356-
[k: string]: unknown;
357-
};
358-
nodeSelector?: {
359-
[k: string]: unknown;
360-
};
361-
pdb?: {
362-
create?: boolean;
363-
maxUnavailable?: string;
364-
minAvailable?: string;
365-
[k: string]: unknown;
366-
};
367-
podAffinityPreset?: string;
368-
podAnnotations?: {
369-
[k: string]: unknown;
370-
};
371-
podAntiAffinityPreset?: string;
372-
podLabels?: {
373-
[k: string]: unknown;
374-
};
375-
podSecurityContext?: {
376-
enabled?: boolean;
377-
fsGroup?: number;
378-
fsGroupChangePolicy?: string;
379-
supplementalGroups?: unknown[];
380-
sysctls?: unknown[];
381-
[k: string]: unknown;
382-
};
383-
priorityClassName?: string;
384-
readinessProbe?: {
385-
enabled?: boolean;
386-
failureThreshold?: number;
387-
initialDelaySeconds?: number;
388-
periodSeconds?: number;
389-
successThreshold?: number;
390-
timeoutSeconds?: number;
391-
[k: string]: unknown;
392-
};
393-
replicaCount?: number;
394-
resources?: {
395-
[k: string]: unknown;
396-
};
397-
resourcesPreset?: string;
398-
schedulerName?: string;
399-
service?: {
400-
annotations?: {
401-
[k: string]: unknown;
402-
};
403-
ports?: {
404-
http?: number;
405-
[k: string]: unknown;
406-
};
407-
type?: string;
408-
[k: string]: unknown;
409-
};
410-
sidecars?: unknown[];
411-
startupProbe?: {
412-
enabled?: boolean;
413-
failureThreshold?: number;
414-
initialDelaySeconds?: number;
415-
periodSeconds?: number;
416-
successThreshold?: number;
417-
timeoutSeconds?: number;
418-
[k: string]: unknown;
419-
};
420-
terminationGracePeriodSeconds?: number;
421-
tolerations?: unknown[];
422-
topologySpreadConstraints?: unknown[];
423-
updateStrategy?: {
424-
[k: string]: unknown;
425-
};
426-
[k: string]: unknown;
427-
};
428266
diagnosticMode?: {
429267
args?: number[];
430268
command?: string[];
@@ -485,6 +323,37 @@ export interface ContourValues {
485323
customStartupProbe?: {
486324
[k: string]: unknown;
487325
};
326+
defaultInitContainers?: {
327+
initConfig?: {
328+
containerSecurityContext?: {
329+
allowPrivilegeEscalation?: boolean;
330+
capabilities?: {
331+
drop?: string[];
332+
[k: string]: unknown;
333+
};
334+
enabled?: boolean;
335+
privileged?: boolean;
336+
readOnlyRootFilesystem?: boolean;
337+
runAsGroup?: number;
338+
runAsNonRoot?: boolean;
339+
runAsUser?: number;
340+
seLinuxOptions?: {
341+
[k: string]: unknown;
342+
};
343+
seccompProfile?: {
344+
type?: string;
345+
[k: string]: unknown;
346+
};
347+
[k: string]: unknown;
348+
};
349+
resources?: {
350+
[k: string]: unknown;
351+
};
352+
resourcesPreset?: string;
353+
[k: string]: unknown;
354+
};
355+
[k: string]: unknown;
356+
};
488357
dnsPolicy?: string;
489358
enabled?: boolean;
490359
extraArgs?: unknown[];
@@ -516,30 +385,6 @@ export interface ContourValues {
516385
tag?: string;
517386
[k: string]: unknown;
518387
};
519-
initConfig?: {
520-
containerSecurityContext?: {
521-
allowPrivilegeEscalation?: boolean;
522-
capabilities?: {
523-
drop?: string[];
524-
[k: string]: unknown;
525-
};
526-
enabled?: boolean;
527-
privileged?: boolean;
528-
readOnlyRootFilesystem?: boolean;
529-
runAsGroup?: number;
530-
runAsNonRoot?: boolean;
531-
runAsUser?: number;
532-
seLinuxOptions?: {
533-
[k: string]: unknown;
534-
};
535-
seccompProfile?: {
536-
type?: string;
537-
[k: string]: unknown;
538-
};
539-
[k: string]: unknown;
540-
};
541-
[k: string]: unknown;
542-
};
543388
initContainers?: unknown[];
544389
kind?: string;
545390
lifecycleHooks?: {
@@ -796,34 +641,9 @@ export interface ContourValues {
796641
defaultStorageClass?: string;
797642
imagePullSecrets?: unknown[];
798643
imageRegistry?: string;
799-
security?: {
800-
allowInsecureImages?: boolean;
801-
[k: string]: unknown;
802-
};
803644
storageClass?: string;
804645
[k: string]: unknown;
805646
};
806-
ingress?: {
807-
annotations?: {
808-
[k: string]: unknown;
809-
};
810-
apiVersion?: string;
811-
certManager?: boolean;
812-
enabled?: boolean;
813-
extraHosts?: unknown[];
814-
extraPaths?: unknown[];
815-
extraRules?: unknown[];
816-
extraTls?: unknown[];
817-
hostname?: string;
818-
ingressClassName?: string;
819-
path?: string;
820-
pathType?: string;
821-
rulesOverride?: unknown[];
822-
secrets?: unknown[];
823-
selfSigned?: boolean;
824-
tls?: boolean;
825-
[k: string]: unknown;
826-
};
827647
kubeVersion?: string;
828648
metrics?: {
829649
prometheusRule?: {

deployment/utils/reverse-proxy.ts

Lines changed: 5 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ContourValues } from './contour.types';
44
import { helmChart } from './helm';
55

66
// prettier-ignore
7-
export const CONTOUR_CHART = helmChart('https://raw.githubusercontent.com/bitnami/charts/refs/heads/index/bitnami/', 'contour', '20.0.3');
7+
export const CONTOUR_CHART = helmChart('https://projectcontour.github.io/helm-charts/', 'contour', '0.4.0');
88

99
export class Proxy {
1010
private lbService: Output<k8s.core.v1.Service> | null = null;
@@ -91,22 +91,6 @@ export class Proxy {
9191
| 'RequestHash'
9292
| 'Cookie';
9393
customRewrite?: string;
94-
virtualHost?: Output<string>;
95-
httpsUpstream?: boolean;
96-
withWwwDomain?: boolean;
97-
// https://projectcontour.io/docs/1.29/config/rate-limiting/#local-rate-limiting
98-
rateLimit?: {
99-
// Max amount of request allowed with the "unit" parameter.
100-
maxRequests: number;
101-
unit: 'second' | 'minute' | 'hour';
102-
// defining the number of requests above the baseline rate that are allowed in a short period of time.
103-
// This would allow occasional larger bursts of traffic not to be rate limited.
104-
burst?: number;
105-
// default 429
106-
responseStatusCode?: number;
107-
// headers to add to the response in case of a rate limit
108-
responseHeadersToAdd?: Record<string, string>;
109-
};
11094
}[],
11195
) {
11296
const cert = new k8s.apiextensions.CustomResource(`cert-${dns.record}`, {
@@ -159,32 +143,10 @@ export class Proxy {
159143
port: route.service.spec.ports[0].port,
160144
},
161145
],
162-
// https://projectcontour.io/docs/1.31/config/request-routing/
146+
// https://projectcontour.io/docs/1.33/config/request-routing/
163147
loadBalancerPolicy: {
164148
strategy: route.loadBalancerPolicy ?? 'RoundRobin',
165149
},
166-
// https://projectcontour.io/docs/1.29/config/rate-limiting/#local-rate-limiting
167-
rateLimitPolicy: route.rateLimit
168-
? {
169-
local: {
170-
requests: route.rateLimit.maxRequests,
171-
unit: route.rateLimit.unit,
172-
responseHeadersToAdd: [
173-
{
174-
name: 'x-rate-limit-active',
175-
value: 'true',
176-
},
177-
...(route.rateLimit.responseHeadersToAdd
178-
? Object.entries(route.rateLimit.responseHeadersToAdd).map(
179-
([key, value]) => ({ name: key, value }),
180-
)
181-
: []),
182-
],
183-
responseStatusCode: route.rateLimit.responseStatusCode || 429,
184-
burst: route.rateLimit.burst,
185-
},
186-
}
187-
: undefined,
188150
...(route.path === '/'
189151
? {}
190152
: {
@@ -318,16 +280,7 @@ export class Proxy {
318280
}
319281
: {}),
320282
},
321-
// Needed because we override the `contour.image.repository` field.
322-
global: {
323-
security: {
324-
allowInsecureImages: true,
325-
},
326-
},
327283
contour: {
328-
image: {
329-
repository: 'bitnamilegacy/contour',
330-
},
331284
podAnnotations: {
332285
'prometheus.io/scrape': 'true',
333286
'prometheus.io/port': '8000',
@@ -337,14 +290,13 @@ export class Proxy {
337290
podLabels: {
338291
'vector.dev/exclude': 'true',
339292
},
293+
// Placeholder, see below
340294
resources: {
341295
limits: {},
342296
},
343297
},
344298
envoy: {
345-
image: {
346-
repository: 'bitnamilegacy/envoy',
347-
},
299+
// Placeholder, see below
348300
resources: {
349301
limits: {},
350302
},
@@ -386,7 +338,7 @@ export class Proxy {
386338
const proxyController = new k8s.helm.v3.Chart('contour-proxy', {
387339
...CONTOUR_CHART,
388340
namespace: ns.metadata.name,
389-
// https://github.com/bitnami/charts/tree/master/bitnami/contour
341+
// https://artifacthub.io/packages/helm/contour/contour
390342
values: chartValues,
391343
});
392344

0 commit comments

Comments
 (0)