Skip to content

Commit

Permalink
Merge pull request #1316 from porter-dev/ym/kuik
Browse files Browse the repository at this point in the history
adding the kuik helm chart
  • Loading branch information
yosefmih authored Jun 20, 2024
2 parents ba2fe70 + 53106e5 commit b5dd686
Show file tree
Hide file tree
Showing 38 changed files with 2,397 additions and 0 deletions.
1 change: 1 addition & 0 deletions Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ local_resource(
helm cm-push addons/deepgram local && \
helm cm-push addons/hf-llm-models local && \
helm cm-push addons/keda-http-add-on local && \
helm cm-push addons/kube-image-keeper local && \
helm repo update local
''',
deps=[
Expand Down
23 changes: 23 additions & 0 deletions addons/kube-image-keeper/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
2 changes: 2 additions & 0 deletions addons/kube-image-keeper/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
digest: sha256:deb5af1d98c80ea52289c771f4cae41c7ef73fbb231c86f8eda553a9d4d53cc8
generated: "2024-01-23T16:17:31.822508041+01:00"
29 changes: 29 additions & 0 deletions addons/kube-image-keeper/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: v2
name: kube-image-keeper
description: kuik is a container image caching system for Kubernetes.
type: application
annotations:
artifacthub.io/containsSecurityUpdates: 'false'
artifacthub.io/prerelease: 'false'
artifacthub.io/license: MIT
artifacthub.io/changes: ''
artifacthub.io/links: |
- name: Chart Sources
url: https://github.com/enix/kube-image-keeper/tree/main/helm/kube-image-keeper
- name: Helm Repository
url: https://charts.enix.io
version: 1.9.0
appVersion: 1.9.0
home: https://github.com/enix/kube-image-keeper
sources:
- https://github.com/enix/kube-image-keeper
maintainers:
- name: Enix
email: [email protected]
url: https://github.com/enixsas
- name: Paul Laffitte
email: [email protected]
url: https://github.com/paullaffitte
- name: David Donchez
email: [email protected]
url: https://github.com/donch
362 changes: 362 additions & 0 deletions addons/kube-image-keeper/README.md.gotmpl

Large diffs are not rendered by default.

116 changes: 116 additions & 0 deletions addons/kube-image-keeper/crds/cachedimage-crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.15.0
name: cachedimages.kuik.enix.io
spec:
group: kuik.enix.io
names:
kind: CachedImage
listKind: CachedImageList
plural: cachedimages
shortNames:
- ci
singular: cachedimage
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .status.phase
name: Status
type: string
- jsonPath: .status.isCached
name: Cached
type: boolean
- jsonPath: .spec.retain
name: Retain
type: boolean
- jsonPath: .spec.expiresAt
name: Expires at
type: string
- jsonPath: .status.usedBy.count
name: Pods count
type: integer
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: CachedImage is the Schema for the cachedimages 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: CachedImageSpec defines the desired state of CachedImage
properties:
expiresAt:
format: date-time
type: string
retain:
type: boolean
sourceImage:
type: string
required:
- sourceImage
type: object
status:
description: CachedImageStatus defines the observed state of CachedImage
properties:
availableUpstream:
type: boolean
digest:
type: string
isCached:
type: boolean
lastSeenUpstream:
format: date-time
type: string
lastSuccessfulPull:
format: date-time
type: string
lastSync:
format: date-time
type: string
phase:
type: string
upToDate:
type: boolean
upstreamDigest:
type: string
usedBy:
properties:
count:
description: |-
jsonpath function .length() is not implemented, so the count field is required to display pods count in additionalPrinterColumns
see https://github.com/kubernetes-sigs/controller-tools/issues/447
type: integer
pods:
items:
properties:
namespacedName:
type: string
type: object
type: array
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
157 changes: 157 additions & 0 deletions addons/kube-image-keeper/crds/registry-crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.15.0
name: repositories.kuik.enix.io
spec:
group: kuik.enix.io
names:
kind: Repository
listKind: RepositoryList
plural: repositories
shortNames:
- repo
singular: repository
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .status.phase
name: Status
type: string
- jsonPath: .status.images
name: Images
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: Repository is the Schema for the repositories 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: RepositorySpec defines the desired state of Repository
properties:
name:
type: string
pullSecretNames:
items:
type: string
type: array
pullSecretsNamespace:
type: string
updateFilters:
items:
type: string
type: array
updateInterval:
type: string
required:
- name
type: object
status:
description: RepositoryStatus defines the observed state of Repository
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
images:
type: integer
lastUpdate:
format: date-time
type: string
phase:
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
1 change: 1 addition & 0 deletions addons/kube-image-keeper/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CAUTION: If you use a storage backend that runs in the same cluster as kuik but in a different namespace, be sure to filter the storage backend's pods. Failure to do so may lead to interdependency issues, making it impossible to start both kuik and its storage backend if either encounters an issue.
Loading

0 comments on commit b5dd686

Please sign in to comment.