Merge pull request #949 from TomChv/feat/improve-kube-pkg

Improve kubernetes package to deploy config from yaml
This commit is contained in:
Sam Alba 2021-09-07 14:32:14 -07:00 committed by GitHub
commit 5fa6a2adb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 55 additions and 17 deletions

View File

@ -16,7 +16,9 @@ Kubectl client
### kubernetes.#Kubectl Inputs
_No input._
| Name | Type | Description |
| ------------- |:-------------: |:-------------: |
|*version* | `*"v1.19.9" \| string` |Kubectl version |
### kubernetes.#Kubectl Outputs
@ -28,11 +30,14 @@ Apply Kubernetes resources
### kubernetes.#Resources Inputs
| Name | Type | Description |
| ------------- |:-------------: |:-------------: |
|*namespace* | `*"default" \| string` |Kubernetes Namespace to deploy to |
|*version* | `*"v1.19.9" \| string` |Version of kubectl client |
|*kubeconfig* | `string` |Kube config file |
| Name | Type | Description |
| ------------- |:-------------: |:-------------: |
|*source* | `dagger.#Artifact` |Kubernetes config to deploy |
|*manifest* | `*null \| string` |Kubernetes manifest to deploy inlined in a string |
|*url* | `*null \| string` |Kubernetes manifest url to deploy remote configuration |
|*namespace* | `*"default" \| string` |Kubernetes Namespace to deploy to |
|*version* | `*"v1.19.9" \| string` |Version of kubectl client |
|*kubeconfig* | `string` |Kube config file |
### kubernetes.#Resources Outputs

View File

@ -11,7 +11,7 @@ import (
#Kubectl: {
// Kubectl version
version: *"v1.19.9" | string
version: dagger.#Input & {*"v1.19.9" | string}
#code: #"""
[ -e /usr/local/bin/kubectl ] || {
@ -50,23 +50,35 @@ import (
#Resources: {
// Kubernetes config to deploy
source?: dagger.#Artifact @dagger(input)
source: dagger.#Input & {*null | dagger.#Artifact}
// Kubernetes manifest to deploy inlined in a string
manifest?: string @dagger(input)
manifest: dagger.#Input & {*null | string}
// Kubernetes manifest url to deploy remote configuration
url: dagger.#Input & {*null | string}
// Kubernetes Namespace to deploy to
namespace: *"default" | string @dagger(input)
namespace: dagger.#Input & {*"default" | string}
// Version of kubectl client
version: *"v1.19.9" | string @dagger(input)
version: dagger.#Input & {*"v1.19.9" | string}
// Kube config file
kubeconfig: string @dagger(input)
kubeconfig: dagger.#Input & {string}
#code: #"""
kubectl create namespace "$KUBE_NAMESPACE" > /dev/null 2>&1 || true
kubectl --namespace "$KUBE_NAMESPACE" apply -R -f /source
if [ -d /source ] || [ -f /source ]; then
kubectl --namespace "$KUBE_NAMESPACE" apply -R -f /source
exit 0
fi
if [ -n "$DEPLOYMENT_URL" ]; then
kubectl --namespace "$KUBE_NAMESPACE" apply -R -f "$DEPLOYMENT_URL"
exit 0
fi
"""#
#up: [
@ -82,7 +94,7 @@ import (
content: kubeconfig
mode: 0o600
},
if manifest != _|_ {
if manifest != null {
op.#WriteFile & {
dest: "/source"
content: manifest
@ -101,8 +113,11 @@ import (
env: {
KUBECONFIG: "/kubeconfig"
KUBE_NAMESPACE: namespace
if url != null {
DEPLOYMENT_URL: url
}
}
if manifest == _|_ {
if manifest == null && source != null {
mount: "/source": from: source
}
},

View File

@ -29,7 +29,7 @@ TestKubeApply: {
}
// Apply deployment
apply: #Resources & {
resources: #Resources & {
kubeconfig: TestKubeconfig
namespace: "dagger-test"
manifest: yaml.Marshal(kubeSrc)
@ -38,6 +38,24 @@ TestKubeApply: {
// Verify deployment
verify: #VerifyApply & {
podname: kubeSrc.metadata.name
namespace: apply.namespace
namespace: resources.namespace
}
}
TestLinkApply: {
// Podname from hello-world-pod
_podname: "hello-world"
// Apply deployment
resources: #Resources & {
kubeconfig: TestKubeconfig
namespace: "dagger-test"
url: "https://raw.githubusercontent.com/mstrzele/intro-to-k8s/master/hello-world-pod.yaml"
}
// Verify deployment
verify: #VerifyApply & {
podname: _podname
namespace: resources.namespace
}
}