11const clonedeep = require ( 'lodash.clonedeep' ) ;
2+ const compareVersions = require ( 'compare-versions' ) ;
3+
24const objectPath = require ( 'object-path' ) ;
35const { awsAccessKeyId, awsSecretAccessKey, s3EndpointUrl } = require ( './templates/s3-template' ) ;
46const { fsBaseDirectory, fsVolumeMounts, fsVolumes } = require ( './templates/fs-template' ) ;
@@ -308,6 +310,47 @@ const applySecret = (inputSpec, containerName, secret) => {
308310 return spec ;
309311} ;
310312
313+ const getIngressApiVersion = ( kubeVersion ) => {
314+ const { version } = kubeVersion ;
315+ if ( compareVersions . compare ( version , '1.14' , '<' ) ) {
316+ return 'extensions/v1beta1' ;
317+ }
318+ if ( compareVersions . compare ( version , '1.19' , '<' ) ) {
319+ return 'networking.k8s.io/v1beta1' ;
320+ }
321+ return 'networking.k8s.io/v1' ;
322+ } ;
323+
324+ const shouldAddIngressPathType = ( kubeVersion ) => {
325+ const { version } = kubeVersion ;
326+ return compareVersions . compare ( version , '1.19' , '>=' ) ;
327+ } ;
328+
329+ const getIngressBackend = ( serviceName , servicePort , kubeVersion ) => {
330+ const { version } = kubeVersion ;
331+ if ( compareVersions . compare ( version , '1.19' , '<' ) ) {
332+ return {
333+ backend : {
334+ serviceName,
335+ servicePort
336+ }
337+ } ;
338+ }
339+ const backend = {
340+ service : {
341+ name : serviceName ,
342+ port : {
343+ [ Number . isInteger ( servicePort ) ? 'number' : 'name' ] : servicePort
344+ }
345+ }
346+ } ;
347+ const ret = { backend } ;
348+ if ( shouldAddIngressPathType ( kubeVersion ) ) {
349+ ret . pathType = 'ImplementationSpecific' ;
350+ }
351+ return ret ;
352+ } ;
353+
311354module . exports = {
312355 findContainer,
313356 parseImageName,
@@ -326,5 +369,7 @@ module.exports = {
326369 applySecret,
327370 createEnvFromConfigmap,
328371 applyAnnotation,
329- applyImagePullSecret
372+ applyImagePullSecret,
373+ getIngressApiVersion,
374+ getIngressBackend
330375} ;
0 commit comments