mirror of
https://github.com/kennethreitz/bruce-operator.git
synced 2026-06-05 23:20:18 +00:00
simplification
This commit is contained in:
+12
-25
@@ -40,14 +40,12 @@ class Operator:
|
||||
self.client = kubernetes.client.CoreV1Api()
|
||||
self.custom_client = kubernetes.client.CustomObjectsApi(self.client.api_client)
|
||||
|
||||
# Ensure resource definitions.
|
||||
self.ensure_namespace()
|
||||
self.ensure_resource_definitions()
|
||||
self.ensure_volumes()
|
||||
# Ensure Registry.
|
||||
self.ensure_registry()
|
||||
|
||||
# Fetch all the buildpacks.
|
||||
# self.spawn_fetch_buildpacks()
|
||||
c = self.spawn_fetch_buildpacks()
|
||||
c.block()
|
||||
|
||||
@property
|
||||
def installed_buildpacks(self):
|
||||
@@ -96,7 +94,7 @@ class Operator:
|
||||
except kubernetes.client.rest.ApiException:
|
||||
return None
|
||||
|
||||
def spawn_self(self, cmd, label, env=None):
|
||||
def kube_spawn_self(self, cmd, label, env=None):
|
||||
if env is None:
|
||||
env = {}
|
||||
|
||||
@@ -106,9 +104,12 @@ class Operator:
|
||||
f"run bruce-operator-{label}-{_hash} --image={OPERATOR_IMAGE} -n {WATCH_NAMESPACE} --restart=Never --quiet=True --record=True --image-pull-policy=Always -- bruce-operator {cmd}"
|
||||
)
|
||||
|
||||
def ensure_namespace(self):
|
||||
self.logger.info("Ensuring bruce namespace...")
|
||||
kubectl(f"apply -f ./deploy/_bruce-namespace.yml", raise_on_error=False)
|
||||
def spawn_self(self, cmd, label, env=None):
|
||||
if env is None:
|
||||
env = {}
|
||||
|
||||
# TODO: ENV
|
||||
return delegator.run(f"bruce-operator {cmd}", block=False)
|
||||
|
||||
def ensure_kubeconfig(self):
|
||||
"""Ensures that ~/.kube/config exists, when running in Kubernetes."""
|
||||
@@ -136,25 +137,11 @@ class Operator:
|
||||
# Use the context.
|
||||
kc.use_context("context")
|
||||
|
||||
def ensure_resource_definitions(self):
|
||||
# Create Buildpacks resource.
|
||||
self.logger.info("Ensuring Buildpack resource definitions...")
|
||||
kubectl(
|
||||
f"apply -f ./deploy/buildpack-resource-definition.yml -n {WATCH_NAMESPACE}"
|
||||
)
|
||||
|
||||
# Create Apps resource.
|
||||
self.logger.info("Ensuring App resource definitions...")
|
||||
kubectl(f"apply -f ./deploy/app-resource-definition.yml -n {WATCH_NAMESPACE}")
|
||||
|
||||
def ensure_volumes(self):
|
||||
self.logger.info("Ensuring Buildpack volume resource...")
|
||||
kubectl(f"apply -f ./deploy/buildpacks-volume.yml -n {WATCH_NAMESPACE}")
|
||||
|
||||
def spawn_fetch_buildpacks(self):
|
||||
self.spawn_self(f"fetch-buildpacks", label="fetch")
|
||||
c = self.spawn_self(f"fetch-buildpacks", label="fetch")
|
||||
for buildpack in self.installed_buildpacks:
|
||||
self.logger.info(f"Pretending to fetch {buildpack_name!r} buildpack!")
|
||||
return c
|
||||
|
||||
def ensure_registry(self):
|
||||
self.logger.info("Ensuring Registry volume...")
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: apps.bruce.kennethreitz.org
|
||||
spec:
|
||||
group: bruce.kennethreitz.org
|
||||
names:
|
||||
kind: App
|
||||
listKind: appList
|
||||
plural: apps
|
||||
singular: app
|
||||
scope: Namespaced
|
||||
version: v1alpha1
|
||||
@@ -1,14 +0,0 @@
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: buildpacks.bruce.kennethreitz.org
|
||||
spec:
|
||||
group: bruce.kennethreitz.org
|
||||
names:
|
||||
kind: Buildpack
|
||||
listKind: buildpackList
|
||||
plural: buildpacks
|
||||
singular: buildpack
|
||||
shortNames: [bp,]
|
||||
scope: Namespaced
|
||||
version: v1alpha1
|
||||
@@ -1,14 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
labels:
|
||||
io.kompose.service: buildpacks-volume
|
||||
name: buildpacks-volume
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 2Gi
|
||||
status: {}
|
||||
@@ -1,66 +0,0 @@
|
||||
apiVersion: v1
|
||||
items:
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "ruby"
|
||||
buildkit: "heroku/ruby"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "nodejs"
|
||||
buildkit: "heroku/nodejs"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "clojure"
|
||||
buildkit: "heroku/clojure"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "python"
|
||||
buildkit: "heroku/python"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "java"
|
||||
buildkit: "heroku/java"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "gradle"
|
||||
buildkit: "heroku/gradle"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "scala"
|
||||
buildkit: "heroku/scala"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "php"
|
||||
buildkit: "heroku/php"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "go"
|
||||
buildkit: "heroku/go"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "elixir"
|
||||
buildkit: "hashnuke/elixir"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "static"
|
||||
repo: "https://github.com/dokku/buildpack-nginx"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "multi"
|
||||
repo: "https://github.com/heroku/heroku-buildpack-multi"
|
||||
kind: List
|
||||
metadata:
|
||||
resourceVersion: ""
|
||||
selfLink: ""
|
||||
@@ -75,3 +75,112 @@ spec:
|
||||
io.kompose.service: bruce-operator
|
||||
status:
|
||||
loadBalancer: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: buildpacks.bruce.kennethreitz.org
|
||||
spec:
|
||||
group: bruce.kennethreitz.org
|
||||
names:
|
||||
kind: Buildpack
|
||||
listKind: buildpackList
|
||||
plural: buildpacks
|
||||
singular: buildpack
|
||||
shortNames: [bp,]
|
||||
scope: Namespaced
|
||||
version: v1alpha1
|
||||
---
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
labels:
|
||||
io.kompose.service: buildpacks-volume
|
||||
name: buildpacks-volume
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
status: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
items:
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "ruby"
|
||||
buildkit: "heroku/ruby"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "nodejs"
|
||||
buildkit: "heroku/nodejs"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "clojure"
|
||||
buildkit: "heroku/clojure"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "python"
|
||||
buildkit: "heroku/python"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "java"
|
||||
buildkit: "heroku/java"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "gradle"
|
||||
buildkit: "heroku/gradle"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "scala"
|
||||
buildkit: "heroku/scala"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "php"
|
||||
buildkit: "heroku/php"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "go"
|
||||
buildkit: "heroku/go"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "elixir"
|
||||
buildkit: "hashnuke/elixir"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "static"
|
||||
repo: "https://github.com/dokku/buildpack-nginx"
|
||||
- apiVersion: bruce.kennethreitz.org/v1alpha1
|
||||
kind: Buildpack
|
||||
metadata:
|
||||
name: "multi"
|
||||
repo: "https://github.com/heroku/heroku-buildpack-multi"
|
||||
kind: List
|
||||
metadata:
|
||||
resourceVersion: ""
|
||||
selfLink: ""
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: apps.bruce.kennethreitz.org
|
||||
spec:
|
||||
group: bruce.kennethreitz.org
|
||||
names:
|
||||
kind: App
|
||||
listKind: appList
|
||||
plural: apps
|
||||
singular: app
|
||||
scope: Namespaced
|
||||
version: v1alpha1
|
||||
|
||||
Reference in New Issue
Block a user