Skip to content

Commit

Permalink
add support for kaniko.
Browse files Browse the repository at this point in the history
  • Loading branch information
nobusugi246 committed Oct 18, 2020
1 parent 62375a2 commit a51c953
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 10 deletions.
48 changes: 42 additions & 6 deletions operator.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import kopf
import subprocess
from pykube import Service, Deployment, HTTPClient, KubeConfig, ObjectDoesNotExist
from pykube import Service, Deployment, Namespace, HTTPClient, KubeConfig, ObjectDoesNotExist


def delete(namespace, names, logger):
Expand All @@ -14,13 +14,37 @@ def delete(namespace, names, logger):
logger.info(f'delete Service: {str(service)}')


@kopf.on.field('tekton.dev', 'v1beta', 'companions', field='spec.namespace')
def namespace(spec, old, new, logger, **kwargs):
logger.info(f'namespace: {old=}, {new=}')
api = HTTPClient(KubeConfig.from_file())
if new:
obj = {
'apiVersion': 'v1',
'kind': 'Namespace',
'metadata': {
'name': new,
}
}
Namespace(api, obj).create()
elif old:
obj = {
'apiVersion': 'v1',
'kind': 'Namespace',
'metadata': {
'name': old,
}
}
Namespace(api, obj).delete()


@kopf.on.field('tekton.dev', 'v1beta', 'companions', field='spec.pipeline.version')
def pipeline(spec, old, new, logger, **kwargs):
logger.info(f'pipeline: {old=}, {new=}')
if new:
subprocess.run(f"kubectl apply -f https://github.com/tektoncd/pipeline/releases/download/{new}/release.yaml", shell=True, check=True)
elif old:
delete(spec.get('namespace', 'tekton-pipelines'),
delete('tekton-pipelines',
["tekton-pipelines-controller", "tekton-pipelines-webhook"],
logger)

Expand All @@ -31,7 +55,7 @@ def triggers(spec, old, new, logger, **kwargs):
if new:
subprocess.run(f"kubectl apply -f https://github.com/tektoncd/triggers/releases/download/{new}/release.yaml", shell=True, check=True)
elif old:
delete(spec.get('namespace', 'tekton-pipelines'),
delete('tekton-pipelines',
["tekton-triggers-controller", "tekton-triggers-webhook"],
logger)

Expand All @@ -40,20 +64,32 @@ def triggers(spec, old, new, logger, **kwargs):
def dashboard(spec, old, new, logger, **kwargs):
logger.info(f'dashboard: {old=}, {new=}')
if new:
subprocess.run(f"kubectl apply -f https://github.com/tektoncd/dashboard/releases/download/{new}/tekton-dashboard-release.yaml", shell=True, check=True)
subprocess.run(f"kubectl apply -f https://github.com/tektoncd/dashboard/releases/download/{new}/tekton-dashboard-release.yaml -n {spec.get('namespace', 'default')}", shell=True, check=True)
elif old:
delete(spec.get('namespace', 'tekton-pipelines'),
delete('tekton-pipelines',
["tekton-dashboard"],
logger)


@kopf.on.field('tekton.dev', 'v1beta', 'companions', field='spec.kaniko.version')
def dashboard(spec, old, new, logger, **kwargs):
logger.info(f'kaniko: {old=}, {new=}')
if new:
subprocess.run(f"kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/master/task/kaniko/{new}/kaniko.yaml -n {spec.get('namespace', 'default')}", shell=True, check=True)
elif old:
subprocess.run(f"kubectl delete task.tekton.dev/kaniko -n {spec.get('namespace', 'tekton-pipelines')}", shell=True, check=True)


@kopf.on.delete('tekton.dev', 'v1beta', 'companions')
def uninstall(spec, logger, **kwargs):
logger.info('uninstall')
try:
delete(spec.get('namespace', 'tekton-pipelines'),
delete('tekton-pipelines',
["tekton-pipelines-controller", "tekton-pipelines-webhook",
"tekton-triggers-controller", "tekton-triggers-webhook", "tekton-dashboard"],
logger)

subprocess.run(f"kubectl delete task.tekton.dev/kaniko -n {spec.get('namespace', 'default')}", shell=True, check=False)

except ObjectDoesNotExist:
pass
7 changes: 6 additions & 1 deletion tekton-operator-crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ spec:
properties:
version:
type: string
triggers:
type: object
properties:
version:
type: string
dashboard:
type: object
properties:
version:
type: string
triggers:
kaniko:
type: object
properties:
version:
Expand Down
8 changes: 5 additions & 3 deletions tekton-operator-obj.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ kind: Companion
metadata:
name: my-tektoncd-companions
spec:
namespace: tekton-pipelines
namespace: pipelines
pipeline:
version: v0.17.1
triggers:
version: v0.9.1
dashboard:
version: v0.10.1
triggers:
version: v0.8.1
kaniko:
version: "0.1"

0 comments on commit a51c953

Please sign in to comment.