项目作者: mamezou-tech

项目描述 :
Concourse kubernetes resource
高级语言: Go
项目地址: git://github.com/mamezou-tech/concourse-k8s-resource.git
创建时间: 2019-12-21T05:49:43Z
项目社区:https://github.com/mamezou-tech/concourse-k8s-resource

开源协议:MIT License

下载


concourse-k8s-resource

Go Report Card
Github Action

Concourse CI custom resource for kubernetes.

This resource assumes that kubernetes deployment is executed by plain manifests(kubectl apply -f) or Kustomize(kubectl apply -k).

In addition to deploy(kubectl apply) operation, it also supports delete(kubectl delete) and undo(kubectl rollout undo) operations.

This resource has been tested on kubernetes v1.20.1 and concourse v6.7.2.

Source Configuration

  • api_server_url - Kubernetes API Server URL. (e.g. https://172.16.10.11:6443)
  • api_server_cert - Kubernetes api server certificate.
  • client_cert - Client certificate that authenticated to access cluster, if specified, clusterKey is required.
  • client_key - Client key corresponding to client_cert.
  • client_token - Kubernetes ServiceAccount token. Required when accessing a cluster with ServiceAccount(neither client_cert nor client_key).
  • kubeconfig - Contents of kubecofig(YAML). if specified, other auth settings(including api_server_url) are ignored.
  • skip_tls_verify - true if you want to skip TLS verification.
  • namespace - Name of target kubernetes namespace. if not specified, default is used.

Behavior

check

Triggers when the watched resources is updated.
The Revision consists of namespace, resource name, and revision(Deployment or StatefulSet resource).
Multiple resources are combined with +.

Example version format : dev:app1:100+dev:app2:50+dev:app3:10.

in

Retrieves the watched resource’s version and writes to version file.

out

Deploys the watched resources to kubernetes using plain manifests or Kustomize overlays. After deployed, wait for the specified time to complete.

  • paths - kubernetes manifest paths(array). plain manifests path(e.g. k8s/deployment.yaml) or kustomize directory(e.g. repo/overlays/prod)
  • kustomize - true if deploying by kustomize. Default to false.
  • status_check_timeout - The time(seconds) to wait for deployment to complete. Default to 5 minutes.
  • command_timeout - The time(seconds) to wait for kubectl apply or delete. Default to unlimited(0).
  • diff - true if using kubectl diff. Default to false.
  • server_dry_run - true if using kubectl apply --dry-run=server. Default to false.
  • delete - true if using kubectl delete operation. Default to false.
  • undo - true if using kubectl rollout undo operation(target resources are watchedResources). Default to false.

Example

See full configuration example here.

resource_types

  1. resource_types:
  2. - name: k8s
  3. type: docker-image
  4. source:
  5. repository: kudohn/concourse-k8s-resource
  6. tag: 0.0.8

resources

  1. resources:
  2. - name: k8s
  3. type: k8s
  4. source:
  5. api_server_url: https://172.16.10.11:6443
  6. api_server_cert: |
  7. -----BEGIN CERTIFICATE-----
  8. ....
  9. -----END CERTIFICATE-----
  10. # use client certificate
  11. client_cert: |
  12. -----BEGIN CERTIFICATE-----
  13. ...
  14. -----END CERTIFICATE-----
  15. client_key: |
  16. -----BEGIN PRIVATE KEY-----
  17. ...
  18. -----END PRIVATE KEY-----
  19. # or use service account token
  20. client_token: ....
  21. # or use kubeconfig
  22. kubeconfig: |
  23. apiVersion: v1
  24. kind: Config
  25. clusters:
  26. - cluster:
  27. ....
  28. contexts:
  29. ....
  30. current-context: ...
  31. users:
  32. - name: concourse
  33. user:
  34. ...
  35. skip_tls_verify: false
  36. namespace: dev
  37. # watched resources(deployment or statefulset is supported)
  38. watch_resources:
  39. - name: app1
  40. kind: Deployment
  41. - name: app2
  42. kind: Deployment
  43. - name: web
  44. kind: StatefulSet

put

Deploy resources using plain k8s manifests

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. status_check_timeout: 60
  8. command_timeout: 30
  9. paths:
  10. - repo/test/plain/deploy1.yaml
  11. - repo/test/plain/deploy2.yaml
  12. - repo/test/plain/sts.yaml

Deploy resources using Kustomize manifests

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. kustomize: true
  8. status_check_timeout: 60
  9. command_timeout: 30
  10. paths:
  11. - repo/test/kustomize/overlays/prod

Undo Resources

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. undo: true

Deploy resources with server-dry-run

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. paths:
  8. - repo/test/kustomize/overlays/prod
  9. server_dry_run: true

Diff Resources manifests

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. paths:
  8. - repo/test/kustomize/overlays/prod
  9. diff: true

Delete Resources

  1. jobs:
  2. - name: deploy-app
  3. plan:
  4. - get: repo
  5. - put: k8s
  6. params:
  7. delete: true

License

MIT License