diff --git a/README.md b/README.md index 9b8a6bb..fd94756 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,5 @@ helm install raczylo/ | Chart | Description | | ----- | ----------- | | [jobs-manager-operator](https://github.com/lukaszraczylo/jobs-manager-operator) | Kubernetes Operator for managing and scheduling Jobs | +| [kube-images-sync](https://github.com/lukaszraczylo/kubernetes-images-sync-operator) | Kubernetes Operator for storing images pre-impex | | ----- | ----------- | \ No newline at end of file diff --git a/charts/jobs-manager-operator/.cr-index/index.yaml b/charts/jobs-manager-operator/.cr-index/index.yaml deleted file mode 100644 index 0e9d2f2..0000000 --- a/charts/jobs-manager-operator/.cr-index/index.yaml +++ /dev/null @@ -1,76 +0,0 @@ -apiVersion: v1 -entries: - jobs-manager: - - apiVersion: v2 - appVersion: 0.0.30 - created: "2024-01-02T10:11:51.115128Z" - description: Kubernetes jobs manager operator - digest: c9c97a02e06d0eeb97906a3af473f284c471895a8fd60249f2928194dda90840 - home: https://raczylo.com - keywords: - - operator - - jobs - - tasks - maintainers: - - email: job-manager-operator@raczylo.com - name: lukaszraczylo - name: jobs-manager - type: application - urls: - - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.30/jobs-manager-0.0.30.tgz - version: 0.0.30 - - apiVersion: v2 - appVersion: 0.0.28 - created: "2023-09-07T23:37:11.593558+01:00" - description: Kubernetes jobs manager operator - digest: bc73fe3343d8d1cdabbad8a6093f2ff81528e7cf5cd51d5810dcfe4a940b91d9 - home: https://raczylo.com - keywords: - - operator - - jobs - - tasks - maintainers: - - email: job-manager-operator@raczylo.com - name: lukaszraczylo - name: jobs-manager - type: application - urls: - - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.28/jobs-manager-0.0.28.tgz - version: 0.0.28 - - apiVersion: v2 - appVersion: 0.0.26 - created: "2023-03-16T15:22:20.131338Z" - description: Kubernetes jobs manager operator - digest: 2355de9cf6f56211380a0e6b079361a4e5537ed704f73a2489892e9d57fbeed8 - home: https://raczylo.com - keywords: - - operator - - jobs - - tasks - maintainers: - - email: job-manager-operator@raczylo.com - name: lukaszraczylo - name: jobs-manager - type: application - urls: - - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.26/jobs-manager-0.0.26.tgz - version: 0.0.26 - - apiVersion: v2 - appVersion: 0.0.24 - created: "2023-03-16T14:16:37.62176Z" - description: Kubernetes jobs manager operator - digest: 0e473e852e1a98b315447a700f23b47d9f9c473e5711b1f7fb3e017ecc6f3c3a - home: https://raczylo.com - keywords: - - operator - - jobs - - tasks - maintainers: - - email: job-manager-operator@raczylo.com - name: lukaszraczylo - name: jobs-manager - type: application - urls: - - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.24/jobs-manager-0.0.24.tgz - version: 0.0.24 -generated: "2024-01-02T10:11:51.115157Z" diff --git a/charts/jobs-manager-operator/Chart.yaml b/charts/jobs-manager-operator/Chart.yaml index c1ec2a7..0e5dd7b 100644 --- a/charts/jobs-manager-operator/Chart.yaml +++ b/charts/jobs-manager-operator/Chart.yaml @@ -13,12 +13,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.30 +version: 0.0.33 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.0.30" +appVersion: "0.0.33" keywords: - operator - jobs diff --git a/charts/jobs-manager-operator/templates/deployment.yaml b/charts/jobs-manager-operator/templates/deployment.yaml index cc38f5e..b738097 100644 --- a/charts/jobs-manager-operator/templates/deployment.yaml +++ b/charts/jobs-manager-operator/templates/deployment.yaml @@ -1,13 +1,3 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "chart.fullname" . }}-controller-manager - labels: - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: jobs-manager-operator - app.kubernetes.io/part-of: jobs-manager-operator - {{- include "chart.labels" . | nindent 4 }} ---- apiVersion: apps/v1 kind: Deployment metadata: @@ -49,16 +39,11 @@ spec: values: - linux containers: - - args: - - --secure-listen-address=0.0.0.0:8443 - - --upstream=http://127.0.0.1:8080/ - - --logtostderr=true - - --v=0 + - args: {{- toYaml .Values.controllerManager.kubeRbacProxy.args | nindent 8 }} env: - name: KUBERNETES_CLUSTER_DOMAIN - value: {{ .Values.kubernetesClusterDomain }} - image: {{ .Values.controllerManager.kubeRbacProxy.image.repository }}:{{ .Values.controllerManager.kubeRbacProxy.image.tag - | default .Chart.AppVersion }} + value: {{ quote .Values.kubernetesClusterDomain }} + image: {{ .Values.controllerManager.kubeRbacProxy.image.repository }}:{{ .Values.controllerManager.kubeRbacProxy.image.tag | default .Chart.AppVersion }} name: kube-rbac-proxy ports: - containerPort: 8443 @@ -66,22 +51,15 @@ spec: protocol: TCP resources: {{- toYaml .Values.controllerManager.kubeRbacProxy.resources | nindent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=127.0.0.1:8080 - - --leader-elect + securityContext: {{- toYaml .Values.controllerManager.kubeRbacProxy.containerSecurityContext + | nindent 10 }} + - args: {{- toYaml .Values.controllerManager.manager.args | nindent 8 }} command: - /manager env: - name: KUBERNETES_CLUSTER_DOMAIN - value: {{ .Values.kubernetesClusterDomain }} - image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag - | default .Chart.AppVersion }} + value: {{ quote .Values.kubernetesClusterDomain }} + image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag | default .Chart.AppVersion }} livenessProbe: httpGet: path: /healthz @@ -95,13 +73,8 @@ spec: port: 8081 initialDelaySeconds: 5 periodSeconds: 10 - resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10 - }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL + resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10 }} + securityContext: {{- toYaml .Values.controllerManager.manager.containerSecurityContext | nindent 10 }} securityContext: runAsNonRoot: true serviceAccountName: {{ include "chart.fullname" . }}-controller-manager diff --git a/charts/jobs-manager-operator/templates/managedjob-crd.yaml b/charts/jobs-manager-operator/templates/managedjob-crd.yaml index 0202f7f..083fce4 100644 --- a/charts/jobs-manager-operator/templates/managedjob-crd.yaml +++ b/charts/jobs-manager-operator/templates/managedjob-crd.yaml @@ -747,7 +747,7 @@ spec: and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: - http://kubernetes.io/docs/user-guide/volumes#emptydir' + https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object @@ -962,7 +962,8 @@ spec: \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field - is immutable." + is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. @@ -1009,7 +1010,8 @@ spec: it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: @@ -2827,7 +2829,7 @@ spec: and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: - http://kubernetes.io/docs/user-guide/volumes#emptydir' + https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object @@ -3042,7 +3044,8 @@ spec: \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field - is immutable." + is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. @@ -3089,7 +3092,8 @@ spec: it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: @@ -4856,7 +4860,7 @@ spec: be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that - the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object @@ -5051,7 +5055,8 @@ spec: that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. + It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. @@ -5094,7 +5099,8 @@ spec: a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + Requests cannot exceed Limits. More + info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: @@ -6747,7 +6753,7 @@ spec: between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object @@ -6925,7 +6931,8 @@ spec: defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. + It can only be set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. @@ -6967,7 +6974,8 @@ spec: Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + value. Requests cannot exceed Limits. More + info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: diff --git a/charts/jobs-manager-operator/values.yaml b/charts/jobs-manager-operator/values.yaml index 58e6033..7dab9ff 100644 --- a/charts/jobs-manager-operator/values.yaml +++ b/charts/jobs-manager-operator/values.yaml @@ -1,5 +1,15 @@ controllerManager: kubeRbacProxy: + args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + containerSecurityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL image: repository: gcr.io/kubebuilder/kube-rbac-proxy tag: v0.13.1 @@ -11,9 +21,18 @@ controllerManager: cpu: 5m memory: 64Mi manager: + args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + containerSecurityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL image: repository: ghcr.io/lukaszraczylo/jobs-manager-operator - tag: 0.0.30 + tag: 0.0.33 resources: limits: cpu: 500m @@ -22,6 +41,8 @@ controllerManager: cpu: 10m memory: 64Mi replicas: 1 + serviceAccount: + annotations: {} kubernetesClusterDomain: cluster.local metricsService: ports: diff --git a/charts/kube-images-sync-operator/Chart.yaml b/charts/kube-images-sync-operator/Chart.yaml new file mode 100644 index 0000000..389ffb9 --- /dev/null +++ b/charts/kube-images-sync-operator/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +name: kube-images-sync +description: | + A Helm chart for Kubernetes Images Sync Operator. + Kubernetes Images Sync Operator is responsible for backing up and restoring images from a Kubernetes cluster. + It's ultimate goal is to provide synchonization of images between multiple environments, quite often air-gapped. + It compiles the list of images currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already uploaded and which are new and + upload only the new ones to avoid repetition. + +type: application + +version: 0.1.33 + +appVersion: "0.1.33" + +home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + +maintainers: + - name: lukaszraczylo + email: github-enquiries@raczylo.com diff --git a/charts/kube-images-sync-operator/templates/_helpers.tpl b/charts/kube-images-sync-operator/templates/_helpers.tpl new file mode 100644 index 0000000..7ba5edc --- /dev/null +++ b/charts/kube-images-sync-operator/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "chart.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "chart.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "chart.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "chart.labels" -}} +helm.sh/chart: {{ include "chart.chart" . }} +{{ include "chart.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "chart.selectorLabels" -}} +app.kubernetes.io/name: {{ include "chart.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "chart.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "chart.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/kube-images-sync-operator/templates/clusterimage-crd.yaml b/charts/kube-images-sync-operator/templates/clusterimage-crd.yaml new file mode 100644 index 0000000..b8237dd --- /dev/null +++ b/charts/kube-images-sync-operator/templates/clusterimage-crd.yaml @@ -0,0 +1,132 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: clusterimages.raczylo.com + annotations: + controller-gen.kubebuilder.io/version: v0.16.1 + labels: + {{- include "chart.labels" . | nindent 4 }} +spec: + group: raczylo.com + names: + kind: ClusterImage + listKind: ClusterImageList + plural: clusterimages + singular: clusterimage + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.exportName + name: Ref + type: string + - jsonPath: .spec.image + name: Image + type: string + - jsonPath: .spec.tag + name: Tag + type: string + - jsonPath: .spec.sha + name: SHA + type: string + - jsonPath: .spec.storage + name: Storage + type: string + - jsonPath: .spec.exportPath + name: Path + type: string + - jsonPath: .status.progress + name: Progress + type: string + - jsonPath: .status.retryCount + name: Retries + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: ClusterImage is the Schema for the clusterimages API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: ClusterImageSpec defines the desired state of ClusterImage + properties: + exportName: + type: string + exportPath: + type: string + fullName: + type: string + image: + type: string + imageNamespace: + type: string + imagePullSecrets: + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + type: object + x-kubernetes-map-type: atomic + type: array + jobAnnotations: + additionalProperties: + type: string + type: object + sha: + type: string + storage: + type: string + tag: + type: string + required: + - exportName + type: object + status: + description: ClusterImageStatus defines the observed state of ClusterImage + properties: + progress: + type: string + retryCount: + default: 0 + description: default value is 0 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/clusterimageexport-crd.yaml b/charts/kube-images-sync-operator/templates/clusterimageexport-crd.yaml new file mode 100644 index 0000000..4b98bd9 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/clusterimageexport-crd.yaml @@ -0,0 +1,175 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: clusterimageexports.raczylo.com + annotations: + controller-gen.kubebuilder.io/version: v0.16.1 + labels: + {{- include "chart.labels" . | nindent 4 }} +spec: + group: raczylo.com + names: + kind: ClusterImageExport + listKind: ClusterImageExportList + plural: clusterimageexports + singular: clusterimageexport + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.basePath + name: BasePath + type: string + - jsonPath: .spec.storage.target + name: Storage + type: string + - jsonPath: .status.progress + name: Progress + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: ClusterImageExport is the Schema for the clusterimageexports API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: ClusterImageExportSpec defines the desired state of ClusterImageExport + properties: + additionalImages: + items: + type: string + type: array + basePath: + description: Base path for the export - both file and S3 + maxLength: 255 + minLength: 1 + type: string + createdAt: + format: date-time + type: string + excludedNamespaces: + items: + type: string + type: array + excludes: + description: Exclude images which contain these strings + items: + type: string + type: array + imagePullSecrets: + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + type: object + x-kubernetes-map-type: atomic + type: array + includes: + description: Include only images which contain these strings + items: + type: string + type: array + jobAnnotations: + additionalProperties: + type: string + type: object + maxConcurrentJobs: + type: integer + name: + type: string + namespaces: + items: + type: string + type: array + storage: + description: ClusterImageStorageSpec defines the desired state of ClusterImageStorage + properties: + s3: + properties: + accessKey: + description: S3 bucket credentials + type: string + bucket: + description: Bucket name + type: string + endpoint: + description: |- + Defines the endpoint for the S3 storage + If none specified - default AWS endpoint will be used + type: string + region: + type: string + roleARN: + description: RoleARN is the ARN of the role to be used for the + deployment + type: string + secretKey: + type: string + secretName: + description: Defines the secret name for credentials + type: string + useRole: + type: boolean + required: + - bucket + - region + type: object + target: + enum: + - file + - S3 + type: string + required: + - target + type: object + required: + - basePath + - maxConcurrentJobs + - name + - storage + type: object + status: + description: ClusterImageExportStatus defines the observed state of ClusterImageExport + properties: + progress: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/deployment.yaml b/charts/kube-images-sync-operator/templates/deployment.yaml new file mode 100644 index 0000000..f9d2058 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "chart.fullname" . }}-sa + labels: + control-plane: sa + {{- include "chart.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.sa.replicas }} + selector: + matchLabels: + control-plane: sa + {{- include "chart.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + control-plane: sa + {{- include "chart.selectorLabels" . | nindent 8 }} + annotations: + kubectl.kubernetes.io/default-container: manager + spec: + containers: + - args: {{- toYaml .Values.sa.manager.args | nindent 8 }} + command: + - /manager + env: + - name: POD_SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName + - name: KUBERNETES_CLUSTER_DOMAIN + value: {{ quote .Values.kubernetesClusterDomain }} + image: {{ .Values.sa.manager.image.repository }}:{{ .Values.sa.manager.image.tag + | default .Chart.AppVersion }} + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: {{- toYaml .Values.sa.manager.resources | nindent 10 }} + securityContext: {{- toYaml .Values.sa.manager.containerSecurityContext | nindent + 10 }} + securityContext: + runAsNonRoot: true + serviceAccountName: {{ include "chart.fullname" . }}-sa + terminationGracePeriodSeconds: 10 \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/impex-mgr-rbac.yaml b/charts/kube-images-sync-operator/templates/impex-mgr-rbac.yaml new file mode 100644 index 0000000..a40a611 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/impex-mgr-rbac.yaml @@ -0,0 +1,74 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-impex-mgr + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - apps + resources: + - daemonsets + - deployments + verbs: + - get + - list + - watch +- apiGroups: + - batch + resources: + - cronjobs + verbs: + - get + - list + - watch +- apiGroups: + - batch + resources: + - jobs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - raczylo.com + resources: + - '*' + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - raczylo.com + resources: + - '*/finalizers' + verbs: + - update +- apiGroups: + - raczylo.com + resources: + - '*/status' + verbs: + - get + - patch + - update \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/impex-mgrbinding-rbac.yaml b/charts/kube-images-sync-operator/templates/impex-mgrbinding-rbac.yaml new file mode 100644 index 0000000..f18b4cb --- /dev/null +++ b/charts/kube-images-sync-operator/templates/impex-mgrbinding-rbac.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "chart.fullname" . }}-impex-mgrbinding + labels: + {{- include "chart.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: '{{ include "chart.fullname" . }}-impex-mgr' +subjects: +- kind: ServiceAccount + name: '{{ include "chart.fullname" . }}-sa' + namespace: '{{ .Release.Namespace }}' \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/metrics-auth-raczylo-rbac.yaml b/charts/kube-images-sync-operator/templates/metrics-auth-raczylo-rbac.yaml new file mode 100644 index 0000000..aff731d --- /dev/null +++ b/charts/kube-images-sync-operator/templates/metrics-auth-raczylo-rbac.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-metrics-auth-raczylo + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create +- apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/metrics-auth-raczylobinding-rbac.yaml b/charts/kube-images-sync-operator/templates/metrics-auth-raczylobinding-rbac.yaml new file mode 100644 index 0000000..8cc8b88 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/metrics-auth-raczylobinding-rbac.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "chart.fullname" . }}-metrics-auth-raczylobinding + labels: + {{- include "chart.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: '{{ include "chart.fullname" . }}-metrics-auth-raczylo' +subjects: +- kind: ServiceAccount + name: '{{ include "chart.fullname" . }}-sa' + namespace: '{{ .Release.Namespace }}' \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/metrics-raczylo-rbac.yaml b/charts/kube-images-sync-operator/templates/metrics-raczylo-rbac.yaml new file mode 100644 index 0000000..8de2344 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/metrics-raczylo-rbac.yaml @@ -0,0 +1,11 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-metrics-raczylo + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- nonResourceURLs: + - /metrics + verbs: + - get \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo-com-leader-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo-com-leader-rbac.yaml new file mode 100644 index 0000000..9283e34 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo-com-leader-rbac.yaml @@ -0,0 +1,38 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ include "chart.fullname" . }}-raczylo-com-leader + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo-com-leaderbinding-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo-com-leaderbinding-rbac.yaml new file mode 100644 index 0000000..0704e11 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo-com-leaderbinding-rbac.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ include "chart.fullname" . }}-raczylo-com-leaderbinding + labels: + {{- include "chart.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: '{{ include "chart.fullname" . }}-raczylo-com-leader' +subjects: +- kind: ServiceAccount + name: '{{ include "chart.fullname" . }}-sa' + namespace: '{{ .Release.Namespace }}' \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-editor-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-editor-rbac.yaml new file mode 100644 index 0000000..146eccf --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-editor-rbac.yaml @@ -0,0 +1,28 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-raczylo.com-clusterimage-editor-role + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - raczylo.com + resources: + - clusterimages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - raczylo.com + resources: + - clusterimages/status + verbs: + - get + - patch + - update + - watch \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-viewer-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-viewer-rbac.yaml new file mode 100644 index 0000000..737e554 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimage-viewer-rbac.yaml @@ -0,0 +1,22 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-raczylo.com-clusterimage-viewer-role + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - raczylo.com + resources: + - clusterimages + verbs: + - get + - list + - watch +- apiGroups: + - raczylo.com + resources: + - clusterimages/status + verbs: + - get + - watch \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-editor-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-editor-rbac.yaml new file mode 100644 index 0000000..3768c33 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-editor-rbac.yaml @@ -0,0 +1,28 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-raczylo.com-clusterimageexport-editor-role + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - raczylo.com + resources: + - clusterimageexports + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - raczylo.com + resources: + - clusterimageexports/status + verbs: + - get + - patch + - update + - watch \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-viewer-rbac.yaml b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-viewer-rbac.yaml new file mode 100644 index 0000000..bf6a5bb --- /dev/null +++ b/charts/kube-images-sync-operator/templates/raczylo.com-clusterimageexport-viewer-rbac.yaml @@ -0,0 +1,16 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "chart.fullname" . }}-raczylo.com-clusterimageexport-viewer-role + labels: + {{- include "chart.labels" . | nindent 4 }} +rules: +- apiGroups: + - raczylo.com + resources: + - clusterimageexports + - clusterimageexports/status + verbs: + - get + - list + - watch \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/sa-metrics-service.yaml b/charts/kube-images-sync-operator/templates/sa-metrics-service.yaml new file mode 100644 index 0000000..8e7d5ed --- /dev/null +++ b/charts/kube-images-sync-operator/templates/sa-metrics-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "chart.fullname" . }}-sa-metrics-service + labels: + control-plane: sa + {{- include "chart.labels" . | nindent 4 }} +spec: + type: {{ .Values.saMetricsService.type }} + selector: + control-plane: sa + {{- include "chart.selectorLabels" . | nindent 4 }} + ports: + {{- .Values.saMetricsService.ports | toYaml | nindent 2 }} \ No newline at end of file diff --git a/charts/kube-images-sync-operator/templates/serviceaccount.yaml b/charts/kube-images-sync-operator/templates/serviceaccount.yaml new file mode 100644 index 0000000..637f8a8 --- /dev/null +++ b/charts/kube-images-sync-operator/templates/serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "chart.fullname" . }}-sa + labels: + {{- include "chart.labels" . | nindent 4 }} + annotations: + {{- toYaml .Values.sa.serviceAccount.annotations | nindent 4 }} \ No newline at end of file diff --git a/charts/kube-images-sync-operator/values.yaml b/charts/kube-images-sync-operator/values.yaml new file mode 100644 index 0000000..a82bdd3 --- /dev/null +++ b/charts/kube-images-sync-operator/values.yaml @@ -0,0 +1,32 @@ +kubernetesClusterDomain: cluster.local +sa: + manager: + args: + - --metrics-bind-address=:8443 + - --leader-elect + - --health-probe-bind-address=:8081 + containerSecurityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + image: + repository: ghcr.io/lukaszraczylo/kubernetes-images-sync-operator + tag: 0.1.33 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + replicas: 1 + serviceAccount: + annotations: {} +saMetricsService: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: 8443 + type: ClusterIP diff --git a/charts/packages/jobs-manager-0.0.24.tgz b/charts/packages/jobs-manager-0.0.24.tgz deleted file mode 100644 index 01c841c..0000000 Binary files a/charts/packages/jobs-manager-0.0.24.tgz and /dev/null differ diff --git a/charts/packages/jobs-manager-0.0.26.tgz b/charts/packages/jobs-manager-0.0.26.tgz deleted file mode 100644 index 83105ce..0000000 Binary files a/charts/packages/jobs-manager-0.0.26.tgz and /dev/null differ diff --git a/charts/packages/jobs-manager-0.0.28.tgz b/charts/packages/jobs-manager-0.0.28.tgz deleted file mode 100644 index 33c6519..0000000 Binary files a/charts/packages/jobs-manager-0.0.28.tgz and /dev/null differ diff --git a/charts/packages/jobs-manager-0.0.33.tgz b/charts/packages/jobs-manager-0.0.33.tgz new file mode 100644 index 0000000..0d1484e Binary files /dev/null and b/charts/packages/jobs-manager-0.0.33.tgz differ diff --git a/charts/packages/kube-images-sync-0.1.30.tgz b/charts/packages/kube-images-sync-0.1.30.tgz new file mode 100644 index 0000000..ebf8465 Binary files /dev/null and b/charts/packages/kube-images-sync-0.1.30.tgz differ diff --git a/charts/packages/kube-images-sync-0.1.32.tgz b/charts/packages/kube-images-sync-0.1.32.tgz new file mode 100644 index 0000000..462bf51 Binary files /dev/null and b/charts/packages/kube-images-sync-0.1.32.tgz differ diff --git a/charts/packages/kube-images-sync-0.1.33.tgz b/charts/packages/kube-images-sync-0.1.33.tgz new file mode 100644 index 0000000..98ce5a9 Binary files /dev/null and b/charts/packages/kube-images-sync-0.1.33.tgz differ diff --git a/index.yaml b/index.yaml index 0e9d2f2..d603556 100644 --- a/index.yaml +++ b/index.yaml @@ -1,6 +1,24 @@ apiVersion: v1 entries: jobs-manager: + - apiVersion: v2 + appVersion: 0.0.33 + created: "2024-01-05T11:54:47.581537Z" + description: Kubernetes jobs manager operator + digest: 61664eeade1115889899d159408e26cc55041352b01db19c483d1c4f259691c7 + home: https://raczylo.com + keywords: + - operator + - jobs + - tasks + maintainers: + - email: job-manager-operator@raczylo.com + name: lukaszraczylo + name: jobs-manager + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.33/jobs-manager-0.0.33.tgz + version: 0.0.33 - apiVersion: v2 appVersion: 0.0.30 created: "2024-01-02T10:11:51.115128Z" @@ -73,4 +91,365 @@ entries: urls: - https://github.com/lukaszraczylo/helm-charts/releases/download/jobs-manager-0.0.24/jobs-manager-0.0.24.tgz version: 0.0.24 -generated: "2024-01-02T10:11:51.115157Z" + kube-images-sync: + - apiVersion: v2 + appVersion: 0.1.33 + created: "2024-09-11T23:54:08.062158+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 2a9f5d329966ed7292cd3fa48947981baa3bd138b63b0bcb685bee92996e4335 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.33/kube-images-sync-0.1.33.tgz + version: 0.1.33 + - apiVersion: v2 + appVersion: 0.1.32 + created: "2024-09-11T23:40:36.155014+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 4f4e18b32b31e7d415932084e75b63cac00d7ddd02c05cf10f3f05e6072bd66a + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.32/kube-images-sync-0.1.32.tgz + version: 0.1.32 + - apiVersion: v2 + appVersion: 0.1.30 + created: "2024-09-11T23:22:12.734435+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 3ecacc006b44f89c946d3da99630ddee76fbf8ea5eddec26a8653cd34c72aaae + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.30/kube-images-sync-0.1.30.tgz + version: 0.1.30 + - apiVersion: v2 + appVersion: 0.1.28 + created: "2024-09-11T18:21:04.379276+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 51a043a9645aecd5e078828bda0ecca6b88123968e7ebaa3324ae69a42b2ed14 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.28/kube-images-sync-0.1.28.tgz + version: 0.1.28 + - apiVersion: v2 + appVersion: 0.1.27 + created: "2024-09-11T18:07:34.752224+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: e686b91448ad6168d4cffa412fba3c2f1e2be3dc6b0d1405509fb908e3423a51 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.27/kube-images-sync-0.1.27.tgz + version: 0.1.27 + - apiVersion: v2 + appVersion: 0.1.26 + created: "2024-09-11T17:56:26.988532+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 2d6b47805f4f21d8da93a22f4e1dc77628626f3cfd2dc7338ee0ab4c3d5e7fe8 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.26/kube-images-sync-0.1.26.tgz + version: 0.1.26 + - apiVersion: v2 + appVersion: 0.1.25 + created: "2024-09-11T17:43:03.322265+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: d14a049dbbca0dcb2bc863e4ad02c19270020f463e5c54eccec74462f0eacd41 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.25/kube-images-sync-0.1.25.tgz + version: 0.1.25 + - apiVersion: v2 + appVersion: 0.1.24 + created: "2024-09-11T16:56:01.534783+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 4035aee26f85d4d7b7f395eea799d27d2dd23a0847ddb3a572019e07f80981d9 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.24/kube-images-sync-0.1.24.tgz + version: 0.1.24 + - apiVersion: v2 + appVersion: 0.1.21 + created: "2024-09-11T16:04:19.547683+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 8338b50e75386a49174982cbeec367824088e53cb0b80aa183159824255b3794 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.21/kube-images-sync-0.1.21.tgz + version: 0.1.21 + - apiVersion: v2 + appVersion: 0.1.20 + created: "2024-09-11T13:13:04.470203+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 4293b9a454c8a6eef454d9ec73a34f020f873c9f4656acd0b8c13358b9d1d47a + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.20/kube-images-sync-0.1.20.tgz + version: 0.1.20 + - apiVersion: v2 + appVersion: 0.1.19 + created: "2024-09-11T12:50:11.580603+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 898d93ef650f43953225fc1eaa7f9d1b59c8d24013178e6c2d66d7f30f5b5d03 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.19/kube-images-sync-0.1.19.tgz + version: 0.1.19 + - apiVersion: v2 + appVersion: 0.1.18 + created: "2024-09-11T12:36:34.327949+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 12f6e1a2fd9a1f28a1163726a56fbb74b00ed43124d89dc41159e58f08be3be8 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.18/kube-images-sync-0.1.18.tgz + version: 0.1.18 + - apiVersion: v2 + appVersion: 0.1.17 + created: "2024-09-11T12:23:33.409015+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 89258fa4b5d6fce2fe42f054b661f3750ee695552b850164df20043c1f4606a3 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.17/kube-images-sync-0.1.17.tgz + version: 0.1.17 + - apiVersion: v2 + appVersion: 0.1.14 + created: "2024-09-11T12:03:29.428884+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: c039b067168d5b74d978a838637aa5ff5a96a24f7e0ca80e253902d323769050 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.14/kube-images-sync-0.1.14.tgz + version: 0.1.14 + - apiVersion: v2 + appVersion: 0.1.11 + created: "2024-09-05T10:32:56.803796+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: e75a8d0a3b056771492052f807b6b7d06d46151f6a8a68596d6dec6c839a207b + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.11/kube-images-sync-0.1.11.tgz + version: 0.1.11 + - apiVersion: v2 + appVersion: 0.1.9 + created: "2024-09-05T09:46:30.734461+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 77dc8bfddbf6282e8d9ccb26ffb752b36018266f1c1c4c35e3361afd1ba79880 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.9/kube-images-sync-0.1.9.tgz + version: 0.1.9 + - apiVersion: v2 + appVersion: 0.1.7 + created: "2024-09-05T08:32:04.715922+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 5201e2c2b6013a5303c824d5f031d5d2283f644866983febbdab5595f75b7db3 + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.7/kube-images-sync-0.1.7.tgz + version: 0.1.7 + - apiVersion: v2 + appVersion: 0.1.5 + created: "2024-09-04T22:04:27.063928+01:00" + description: 'A Helm chart for Kubernetes Images Sync Operator. Kubernetes Images + Sync Operator is responsible for backing up and restoring images from a Kubernetes + cluster. It''s ultimate goal is to provide synchonization of images between + multiple environments, quite often air-gapped. It compiles the list of images + currently present in the cluster and uploads them to the specified storage. + Whenever new CRD is created - it will try to figure out which images were already + uploaded and which are new and upload only the new ones to avoid repetition. ' + digest: 47579fa99b167c00b17b969a560462c868ac4bd0a119f92ddfef00813db444ee + home: https://github.com/lukaszraczylo/kubernetes-images-sync-operator + maintainers: + - email: github-enquiries@raczylo.com + name: lukaszraczylo + name: kube-images-sync + type: application + urls: + - https://github.com/lukaszraczylo/helm-charts/releases/download/kube-images-sync-0.1.5/kube-images-sync-0.1.5.tgz + version: 0.1.5 +generated: "2024-09-11T23:54:08.573376+01:00"