diff --git a/Dockerfile b/Dockerfile index 470a555..3e91069 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,9 @@ RUN echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/ap RUN apt-get update RUN apt-get install -y kubectl +RUN mkdir -p /opt/buildpacks +# VOLUME /opt/buildpacks + COPY . /app RUN pip3 install -e . CMD bruce-operator watch diff --git a/deploy/_bruce-namespace.yml b/deploy/_bruce-namespace.yml deleted file mode 100644 index 9bf50f0..0000000 --- a/deploy/_bruce-namespace.yml +++ /dev/null @@ -1,11 +0,0 @@ - -{ - "kind": "Namespace", - "apiVersion": "v1", - "metadata": { - "name": "bruce", - "labels": { - "name": "bruce" - } - } -} diff --git a/deploy/app-resource-definition.yml b/deploy/app-resource-definition.yml deleted file mode 100644 index ff7dfbc..0000000 --- a/deploy/app-resource-definition.yml +++ /dev/null @@ -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 diff --git a/deploy/buildpack-resource-definition.yml b/deploy/buildpack-resource-definition.yml deleted file mode 100644 index bd70cd5..0000000 --- a/deploy/buildpack-resource-definition.yml +++ /dev/null @@ -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 diff --git a/deploy/buildpacks-volume.yml b/deploy/buildpacks-volume.yml deleted file mode 100644 index 25d1b78..0000000 --- a/deploy/buildpacks-volume.yml +++ /dev/null @@ -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: {} diff --git a/deploy/heroku-buildpacks.yml b/deploy/heroku-buildpacks.yml deleted file mode 100644 index e6fc232..0000000 --- a/deploy/heroku-buildpacks.yml +++ /dev/null @@ -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: "" diff --git a/deploy/operator.yml b/deploy/operator.yml index 9d23861..2e4cd9b 100644 --- a/deploy/operator.yml +++ b/deploy/operator.yml @@ -1,3 +1,11 @@ +--- +kind: Namespace +apiVersion: v1 +metadata: + name: bruce + labels: + name: bruce +--- apiVersion: v1 kind: ServiceAccount metadata: @@ -33,31 +41,133 @@ subjects: name: bruce-operator namespace: bruce --- -apiVersion: apps/v1 +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 +--- +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 +--- +apiVersion: extensions/v1beta1 kind: Deployment metadata: + annotations: + kompose.cmd: C:\Users\me\OneDrive\system\bin\kompose.exe convert -f .\kubernetes-compose.yml + kompose.version: 1.1.0 (36652f6) + creationTimestamp: null + labels: + io.kompose.service: bruce-operator name: bruce-operator spec: replicas: 1 - selector: - matchLabels: - name: bruce-operator + strategy: + type: Recreate template: metadata: + creationTimestamp: null labels: - name: bruce-operator - namespace: bruce + io.kompose.service: bruce-operator spec: - serviceAccountName: bruce-operator containers: - - name: bruce-operator - image: kennethreitz/bruce-operator:latest - imagePullPolicy: Always - env: - - name: WATCH_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace + - env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: kennethreitz/bruce-operator:latest + name: bruce-operator + resources: {} + restartPolicy: Always +status: {} --- apiVersion: v1 kind: Service @@ -75,3 +185,77 @@ spec: io.kompose.service: bruce-operator status: loadBalancer: {} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: bruce-registry-data + name: bruce-registry-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 80Gi +status: {} +--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\Users\me\OneDrive\system\bin\kompose.exe convert -f .\kubernetes-compose.yml + kompose.version: 1.1.0 (36652f6) + creationTimestamp: null + labels: + io.kompose.service: registry + name: registry +spec: + replicas: 1 + strategy: + type: Recreate + template: + metadata: + creationTimestamp: null + labels: + io.kompose.service: registry + spec: + containers: + - env: + - name: REGISTRY_HTTP_ADDR + value: 0.0.0.0:80 + image: registry:2 + name: registry + resources: {} + volumeMounts: + - mountPath: /var/lib/registry + name: bruce-registry-data + restartPolicy: Always + volumes: + - name: bruce-registry-data + persistentVolumeClaim: + claimName: bruce-registry-data +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\Users\me\OneDrive\system\bin\kompose.exe convert -f .\kubernetes-compose.yml + kompose.version: 1.1.0 (36652f6) + creationTimestamp: null + labels: + io.kompose.service: registry + name: registry +spec: + clusterIP: None + ports: + - name: registry-http + port: 80 + # nodePort: 80 + targetPort: 0 + selector: + io.kompose.service: registry +status: + loadBalancer: {} diff --git a/deploy/registry-data.yml b/deploy/registry-data.yml deleted file mode 100644 index fb431f9..0000000 --- a/deploy/registry-data.yml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - creationTimestamp: null - labels: - io.kompose.service: bruce-registry-data - name: bruce-registry-data -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 20Gi -status: {} diff --git a/deploy/registry-deployment.yml b/deploy/registry-deployment.yml deleted file mode 100644 index a6e34e7..0000000 --- a/deploy/registry-deployment.yml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - kompose.cmd: C:\Users\me\OneDrive\system\bin\kompose.exe convert -f .\kubernetes-compose.yml - kompose.version: 1.1.0 (36652f6) - creationTimestamp: null - labels: - io.kompose.service: registry - name: registry -spec: - replicas: 1 - strategy: - type: Recreate - template: - metadata: - creationTimestamp: null - labels: - io.kompose.service: registry - spec: - containers: - - env: - - name: REGISTRY_HTTP_ADDR - value: 0.0.0.0:80 - image: registry:2 - name: registry - resources: {} - volumeMounts: - - mountPath: /var/lib/registry - name: bruce-registry-data - restartPolicy: Always - volumes: - - name: bruce-registry-data - persistentVolumeClaim: - claimName: bruce-registry-data -status: {} diff --git a/deploy/registry-service.yml b/deploy/registry-service.yml deleted file mode 100644 index 283225c..0000000 --- a/deploy/registry-service.yml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - kompose.cmd: C:\Users\me\OneDrive\system\bin\kompose.exe convert -f .\kubernetes-compose.yml - kompose.version: 1.1.0 (36652f6) - creationTimestamp: null - labels: - io.kompose.service: registry - name: registry -spec: - clusterIP: None - ports: - - name: registry-http - port: 80 - # nodePort: 80 - targetPort: 0 - selector: - io.kompose.service: registry -status: - loadBalancer: {} diff --git a/test.bat b/test.bat index 3016f17..fb6d9f8 100644 --- a/test.bat +++ b/test.bat @@ -1,4 +1,4 @@ docker build --tag kennethreitz/bruce-operator . docker push kennethreitz/bruce-operator kubectl delete -f .\deploy\operator.yml -n bruce -kubectl create -f .\deploy\operator.yml -n bruce +kubectl create -f .\deploy\operator.yml -n bruce --validate=false