From 4490e740d39d90797a7c93fcf4b24286c295deaf Mon Sep 17 00:00:00 2001 From: Charles Martinot Date: Fri, 13 Jan 2017 18:07:48 +0800 Subject: [PATCH] First version --- Dockerfile | 8 ++++++++ README.md | 34 ++++++++++++++++++++++++++++++++-- update.sh | 9 +++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 update.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c5457cf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine +RUN apk -Uuv add curl ca-certificates +RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl +RUN chmod +x ./kubectl +RUN mv ./kubectl /usr/local/bin/kubectl +ADD update.sh /bin/ +RUN chmod +x /bin/update.sh +CMD /bin/update.sh diff --git a/README.md b/README.md index c0163a5..f3367b7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -# drone-kubernetes -A drone plugin to update a deployment on a kubernetes cluster +# Kubernetes plugin for drone.io + +This plugin allows to update a Kubernetes deployment. + +## Usage + +This pipeline will update the `my-deployment` deployment with the image tagged `DRONE_COMMIT_SHA:8` + + pipeline: + deploy: + image: quay.io/honestbee/drone-kubernetes + deployment: my-deployment + repo: myorg/myrepo + name: my-container + tag: ${DRONE_COMMIT_SHA:8} + +## Required secrets + + drone secret add --image=honestbee/drone-kubernetes \ + your-user/your-repo KUBERNETES_SERVER https://mykubernetesapiserver + + + drone secret add --image=honestbee/drone-kubernetes \ + your-user/your-repo KUBERNETES_TOKEN eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJ... + +## To do + +Replace the current kubectl bash script with a go implementation. + +### Special thanks + +Inspired by [drone-helm](https://github.com/ipedrazas/drone-helm). diff --git a/update.sh b/update.sh new file mode 100644 index 0000000..c2f5053 --- /dev/null +++ b/update.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +kubectl config set-credentials default --token=${KUBERNETES_TOKEN} +kubectl config set-cluster default --server=${KUBERNETES_SERVER} --insecure-skip-tls-verify=true +kubectl config set-context default --cluster=default --user=default +kubectl config use-context default +kubectl set image deployment/${PLUGIN_DEPLOYMENT} ${PLUGIN_NAME}=${PLUGIN_REPO}:${PLUGIN_TAG} + +#TODO : Identify a good way to identify IMAGE_NAME and PLUGIN_DEPLOY_IMAGE