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); angular.module('portainer.docker').factory('ImageHelper', ImageHelperFactory);
function ImageHelperFactory() { function ImageHelperFactory() {
@ -28,9 +28,8 @@ function ImageHelperFactory() {
* @param {PorImageRegistryModel} registry * @param {PorImageRegistryModel} registry
*/ */
function createImageConfigForContainer(imageModel) { function createImageConfigForContainer(imageModel) {
const registry = imageModel.UseRegistry ? imageModel.Registry : undefined;
return { return {
fromImage: buildImageFullURI(imageModel.Image, registry), fromImage: buildImageFullURIFromModel(imageModel),
}; };
} }

View File

@ -10,7 +10,7 @@ import {
import KubernetesApplicationHelper from 'Kubernetes/helpers/application'; import KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper'; import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper'; import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils'; import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
class KubernetesDaemonSetConverter { class KubernetesDaemonSetConverter {
/** /**
@ -51,7 +51,7 @@ class KubernetesDaemonSetConverter {
payload.spec.template.metadata.labels.app = daemonSet.Name; payload.spec.template.metadata.labels.app = daemonSet.Name;
payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName; payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;
payload.spec.template.spec.containers[0].name = daemonSet.Name; 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) { if (daemonSet.ImageModel.Registry && daemonSet.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${daemonSet.ImageModel.Registry.Id}` }]; 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 KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper'; import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper'; import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils'; import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
class KubernetesDeploymentConverter { class KubernetesDeploymentConverter {
/** /**
@ -56,7 +56,7 @@ class KubernetesDeploymentConverter {
payload.spec.template.spec.containers[0].name = deployment.Name; payload.spec.template.spec.containers[0].name = deployment.Name;
if (deployment.ImageModel) { 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) { if (deployment.ImageModel.Registry && deployment.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${deployment.ImageModel.Registry.Id}` }]; 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 KubernetesApplicationHelper from 'Kubernetes/helpers/application';
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper'; import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper'; import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
import { buildImageFullURI } from '@/react/docker/images/utils'; import { buildImageFullURIFromModel } from '@/react/docker/images/utils';
import KubernetesPersistentVolumeClaimConverter from './persistentVolumeClaim'; import KubernetesPersistentVolumeClaimConverter from './persistentVolumeClaim';
class KubernetesStatefulSetConverter { class KubernetesStatefulSetConverter {
@ -58,7 +58,7 @@ class KubernetesStatefulSetConverter {
payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName; payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;
payload.spec.template.spec.containers[0].name = statefulSet.Name; payload.spec.template.spec.containers[0].name = statefulSet.Name;
if (statefulSet.ImageModel.Image) { 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) { if (statefulSet.ImageModel.Registry && statefulSet.ImageModel.Registry.Authentication) {
payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${statefulSet.ImageModel.Registry.Id}` }]; payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${statefulSet.ImageModel.Registry.Id}` }];
} }

View File

@ -40,9 +40,17 @@ export function imageContainsURL(image: string) {
return false; 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 * builds the complete uri for an image based on its registry
* @param {PorImageRegistryModel} imageModel
*/ */
export function buildImageFullURI(image: string, registry?: Registry) { export function buildImageFullURI(image: string, registry?: Registry) {
if (!registry) { if (!registry) {