fix(kube): deploy app with image [EE-5738] (#9194)

pull/9198/head
Chaim Lev-Ari 2023-07-12 10:26:50 +04:00 committed by GitHub
parent a9c6fa5ac2
commit de5c959e24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 10 deletions

View File

@ -1,4 +1,4 @@
import { buildImageFullURI, imageContainsURL } from '@/react/docker/images/utils';
import { buildImageFullURIFromModel, imageContainsURL } from '@/react/docker/images/utils';
angular.module('portainer.docker').factory('ImageHelper', ImageHelperFactory);
function ImageHelperFactory() {
@ -28,9 +28,8 @@ function ImageHelperFactory() {
* @param {PorImageRegistryModel} registry
*/
function createImageConfigForContainer(imageModel) {
const registry = imageModel.UseRegistry ? imageModel.Registry : undefined;
return {
fromImage: buildImageFullURI(imageModel.Image, registry),
fromImage: buildImageFullURIFromModel(imageModel),
};
}

View File

@ -10,7 +10,7 @@ import {
import KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils';
import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
class KubernetesDaemonSetConverter {
/**
@ -51,7 +51,7 @@ class KubernetesDaemonSetConverter {
payload.spec.template.metadata.labels.app = daemonSet.Name;
payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;
payload.spec.template.spec.containers[0].name = daemonSet.Name;
payload.spec.template.spec.containers[0].image = buildImageFullURI(daemonSet.ImageModel);
payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(daemonSet.ImageModel);
if (daemonSet.ImageModel.Registry && daemonSet.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${daemonSet.ImageModel.Registry.Id}` }];
}

View File

@ -11,7 +11,7 @@ import {
import KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils';
import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
class KubernetesDeploymentConverter {
/**
@ -56,7 +56,7 @@ class KubernetesDeploymentConverter {
payload.spec.template.spec.containers[0].name = deployment.Name;
if (deployment.ImageModel) {
payload.spec.template.spec.containers[0].image = buildImageFullURI(deployment.ImageModel);
payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(deployment.ImageModel);
if (deployment.ImageModel.Registry && deployment.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${deployment.ImageModel.Registry.Id}` }];

View File

@ -12,7 +12,7 @@ import {
import KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils';
import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
import KubernetesPersistentVolumeClaimConverter from './persistentVolumeClaim';
class KubernetesStatefulSetConverter {
@ -58,7 +58,7 @@ class KubernetesStatefulSetConverter {
payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;
payload.spec.template.spec.containers[0].name = statefulSet.Name;
if (statefulSet.ImageModel.Image) {
payload.spec.template.spec.containers[0].image = buildImageFullURI(statefulSet.ImageModel);
payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(statefulSet.ImageModel);
if (statefulSet.ImageModel.Registry && statefulSet.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${statefulSet.ImageModel.Registry.Id}` }];
}

View File

@ -40,9 +40,17 @@ export function imageContainsURL(image: string) {
return false;
}
export function buildImageFullURIFromModel(imageModel: {
UseRegistry: boolean;
Registry?: Registry;
Image: string;
}) {
const registry = imageModel.UseRegistry ? imageModel.Registry : undefined;
return buildImageFullURI(imageModel.Image, registry);
}
/**
* builds the complete uri for an image based on its registry
* @param {PorImageRegistryModel} imageModel
*/
export function buildImageFullURI(image: string, registry?: Registry) {
if (!registry) {