-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
396 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
apiVersion: kpack.io/v1alpha2 | ||
kind: ClusterStack | ||
metadata: | ||
name: base | ||
spec: | ||
id: "io.buildpacks.stacks.jammy" | ||
buildImage: | ||
image: "paketobuildpacks/build-jammy-base" | ||
runImage: | ||
image: "paketobuildpacks/run-jammy-base" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
apiVersion: kpack.io/v1alpha2 | ||
kind: ClusterStore | ||
metadata: | ||
name: default | ||
spec: | ||
sources: | ||
- image: gcr.io/paketo-buildpacks/java | ||
- image: gcr.io/paketo-buildpacks/nodejs | ||
- image: gcr.io/paketo-buildpacks/python | ||
- image: gcr.io/paketo-buildpacks/procfile | ||
- image: gcr.io/paketo-buildpacks/source-removal | ||
- image: gcr.io/paketo-buildpacks/environment-variables |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
apiVersion: kpack.io/v1alpha2 | ||
kind: Builder | ||
metadata: | ||
name: python-builder-2 | ||
namespace: default | ||
spec: | ||
tag: k3d-myregistry.localhost:12345/apps/python-builder | ||
stack: | ||
name: base | ||
kind: ClusterStack | ||
store: | ||
name: default | ||
kind: ClusterStore | ||
order: | ||
- group: | ||
- id: paketo-buildpacks/python | ||
- id: paketo-buildpacks/procfile | ||
- id: paketo-buildpacks/source-removal | ||
- id: paketo-buildpacks/environment-variables |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
"""Custom Resources for environments, mainly kpack.""" | ||
|
||
from datetime import datetime | ||
from typing import Self | ||
|
||
from pydantic import BaseModel, ConfigDict, Field, model_validator | ||
|
||
|
||
class Metadata(BaseModel): | ||
"""Basic k8s metadata spec.""" | ||
|
||
class Config: | ||
"""Do not exclude unknown properties.""" | ||
|
||
extra = "allow" | ||
|
||
name: str | ||
namespace: str | None = None | ||
labels: dict[str, str] = Field(default_factory=dict) | ||
annotations: dict[str, str] = Field(default_factory=dict) | ||
uid: str | None = None | ||
creationTimestamp: datetime | None = None | ||
deletionTimestamp: datetime | None = None | ||
|
||
|
||
class EnvItem(BaseModel): | ||
"""Environment variable definition.""" | ||
|
||
name: str | ||
value: str | ||
|
||
|
||
class ResourceRequest(BaseModel): | ||
"""Resource request entry.""" | ||
|
||
cpu: str | ||
memory: str | ||
|
||
|
||
class K8sResourceRequest(BaseModel): | ||
"""K8s resource request.""" | ||
|
||
requests: ResourceRequest | ||
limits: ResourceRequest | ||
|
||
|
||
class ImagePullSecret(BaseModel): | ||
"""K8s image pull secret.""" | ||
|
||
name: str | ||
|
||
|
||
class PersistentVolumeReference(BaseModel): | ||
"""Reference to a persistent volume claim.""" | ||
|
||
persistentVolumeClaimName: str | ||
|
||
|
||
class KpackBuilderReference(BaseModel): | ||
"""Refernce to Kpack builder.""" | ||
|
||
name: str | ||
kind: str = "Builder" | ||
|
||
|
||
class DockerImage(BaseModel): | ||
"""Docker Image.""" | ||
|
||
image: str | ||
|
||
|
||
class DockerImageWithSecret(DockerImage): | ||
"""Docker image with a pull secret.""" | ||
|
||
imagePullSecrets: list[ImagePullSecret] | ||
|
||
|
||
class KpackGitSource(BaseModel): | ||
"""Git repository source.""" | ||
|
||
url: str | ||
revision: str | ||
|
||
|
||
class KpackBlobSource(BaseModel): | ||
"""Blob/file archive source.""" | ||
|
||
url: str | ||
stripComponents: str | ||
|
||
|
||
class KpackSource(BaseModel): | ||
"""Kpack files source resource.""" | ||
|
||
git: KpackGitSource | None = None | ||
blob: KpackBlobSource | None = None | ||
|
||
@model_validator(mode="after") | ||
def validate(self) -> Self: | ||
"""Validate mode data.""" | ||
if bool(self.git) == bool(self.blob): | ||
raise ValueError("'git' and 'blob' are mutually exclusive and one of them must be set.") | ||
return self | ||
|
||
|
||
class KpackBuildCustomization(BaseModel): | ||
"""Customization of a kpack build.""" | ||
|
||
env: list[EnvItem] | ||
|
||
|
||
class KpackImageSpec(BaseModel): | ||
"""KPack image spec model.""" | ||
|
||
tag: str | ||
additionalTags: list[str] | ||
serviceAccountName: str | ||
builder: KpackBuilderReference | ||
source: KpackSource | ||
build: KpackBuildCustomization | ||
successBuildHistoryLimit: int = 1 | ||
failedBuildHistoryLimit: int = 1 | ||
|
||
|
||
class KpackImage(BaseModel): | ||
"""Kpack Image resource.""" | ||
|
||
model_config = ConfigDict( | ||
extra="allow", | ||
) | ||
kind: str = "Image" | ||
apiVersion: str = "kpack.io/v1alpha2" | ||
metadata: Metadata | ||
spec: KpackImageSpec | ||
|
||
|
||
class KpackVolumeCache(BaseModel): | ||
"""Persistent volume to serve as cache for kpack build.""" | ||
|
||
volume: PersistentVolumeReference | ||
|
||
|
||
class ImageTagReference(BaseModel): | ||
"""Reference to an image tag.""" | ||
|
||
tag: str | ||
|
||
|
||
class KpackCacheImage(BaseModel): | ||
"""Image definition to use as build cache.""" | ||
|
||
registry: ImageTagReference | ||
|
||
|
||
class KpackBuildSpec(BaseModel): | ||
"""Spec for kpack build.""" | ||
|
||
builder: DockerImageWithSecret | ||
cache: KpackVolumeCache | KpackCacheImage | ||
env: list[EnvItem] | ||
resources: K8sResourceRequest | ||
runImage: DockerImage | ||
serviceAccountName: str | ||
source: KpackSource | ||
tags: list[str] | ||
activeDeadlineSeconds: int = 1800 | ||
|
||
|
||
class KpackBuild(BaseModel): | ||
"""KPack build resource.""" | ||
|
||
model_config = ConfigDict( | ||
extra="allow", | ||
) | ||
kind: str = "Build" | ||
apiVersion: str = "kpack.io/v1alpha2" | ||
metadata: Metadata | ||
spec: KpackBuildSpec |
Oops, something went wrong.