Garden是一款开发人员工具,可自动完成工作流程,使Kubernetes应用程序的开发和测试变得前所未有的快捷
Garden是一款开发人员工具,可自动完成工作流程,使Kubernetes应用程序的开发和测试变得前所未有的快捷This is a big one. Below are some feature highlights, and you'll find the full changelog at the bottom.
Huge thanks to everyone who contributed, through feedback, issues, PRs—and patience. All of those are super helpful and appreciated.
Also, the Garden team will be at KubeCon San Diego next week. Come swing by our booth and say hi if you're in the neighbourhood
Test and Task Artifacts
You can now use the artifacts
directive to store files that are generated by test and task runs. This is for example useful if you use JUnit, Cucumber, or other testing frameworks that generate test reports. The artifacts are stored under the .garden/artifacts
directory and you can also download them from the dashboard.
cert-manager Integration
Garden now integrates with cert-manager
which automates creating and renewing TLS certificates. We started with a limited set of options but plan to grow the feature if there is demand. Check out the cert-manager
guide for more details, and—as always—please give us feedback and feature requests!
Production Flag
You can now flag environments as production environments by setting production: true
in the environment config. This will protect against accidentally messing with your production environments, by prompting for confirmation before e.g. deploying or running tests in the environment.
The flag is also given to each provider, which may modify behaviour accordingly. For example, the kubernetes
provider will set the default number of replicas for container
services to 3 (unless specified by the user).
You can read more about how the kubernetes
provider handles production environments here. We would also highly appreciate feedback on the production settings! You can reach out via GitHub issues or on our Slack channel.
Other Improvements
Other honourable mentions include:
- Services are now deleted in dependency order.
- Faster initialisation and status checks (so your commands start faster, especially when latency is high).
- The project level
exclude
option is now used to optimize file watching—handy if you have large directories you don't want to watch for changes. Thanks @matuszeman for your contribution!❤️ ✨ - Added an option for enabling BuildKit, and update the in-cluster docker daemon to 19.03.
- Fixed an issue where deleted files weren't removed from subsequent builds.
Changelog
Features
- implement production flag (e0bb7be4)
- allow exporting artifacts from task and test runs (a1e4c1c1)
- commands: add test/task artifacts to command result (63f245b2)
- dashboard: show artifacts in test/task result sidebar (770ff304)
- k8s: add
clusterDocker.enableBuildKit
option (c1886f55) - k8s: cert-manager integration (#1261) (21f2775b)
Bug Fixes
- displaced/wrong logging when setting up cert-manager (eef701d3)
- core: ensure deletes are synced when staging builds (6cb6a3af)
- examples: set correct context for demo-project (d5f82b53)
- k8s: helm status check now compares Garden version (28c59879)
- k8s: remove the tick (7fa781c2)
- k8s: don't match on version label when getting workload pods (f9b6b069)
- logger: parameters weren't being solved correctly (aa7d3fa5)
- sync: issue with build staging sync procedure on Windows (785d54f6)
- sync: fix intermittent concurrency issues while syncing directories (385b1dd1)
- watcher: use exclude options to optimize file watching (#1320) (aa82e899)
- windows: fix excludes and filename anchoring (b3539c37)
- windows: normalize path for sync temp directory (27617765)
Improvement
- core: delete services in dep order (7895c926)
- k8s: tune probes for build-sync pods (68ba9104)
- k8s: update in-cluster docker to 19.03.4 (a4fb4182)
- k8s: skip superfluous service endpoint check (93ee43c2)
- k8s: much faster init and status checks (cca55970)
- openfaas: updated faas-netes and made more configurable (4b188ee7)
Assets
6
chore(release): release v0.10.14-alpha.0
Merge pull request #1268 from garden-io/delete-metadata-ns improvement(k8s): also delete metadata namespace when cleaning up
Assets
6
This release contains some important bug fixes. Most notably improvements to the NFS provisioner.
Changelog
Bug Fixes
Assets
6
docs: fix typo
Assets
6
This release adds support for a hot-reload post-sync command. This allows you to run arbitrary commands inside the running container, after a hot-reload event. Check out this example for motivation and use cases.
You can now also use the linkUrl
field on a service ingress to manually set the URL of the ingress. This is useful if the actual URL is different from what the ingress specs suggest, e.g. because you have a load balancer that does path re-writes. The linkUrl
is displayed in the console, the dashboard, and used by the call
command.
CHANGELOG
Features
- container: added hotReload.postSyncCommand (eb942883)
Improvement
Bug Fixes
- commands: fix regression due to changes to test|task result output (71e204d3)
- core: null reference error when an action with dependants failed (7c1fb0d2)
- k8s: ensure get logs handler resolves (4763532c)
- k8s: filter out failed and evicted pods when listing (65e4d0ff)
Code Refactoring
Assets
6
ci: speed up test minikube job
Assets
8
Along with a few bug fixes, this release adds the valueFiles
field to specify custom value files for Helm charts, and a timeout
option for container builds builds.
The big features we mentioned last week are still under construction—more to come soon!
Changelog
Features
- container: add build.timeout option (fd580379)
- helm: add valueFiles field to specify custom value files (#1099) (ca47483c)
Bug Fixes
Assets
8
Merge pull request #1101 from garden-io/release-v0.10.5 chore(release): bump version to v0.10.5
Assets
6
chore(release): release v0.10.5-alpha.0
improvement(core): crucial enhancements to command
Assets
6
First of all, a big THANK YOU to our community for your contributions to this release!
Whether it's by helping us track down bugs, by submitting PRs (@theRealWardo, @johnraz, @dev-kpyc), or by giving us some much valued feedback.
The most requested feature after our last release was better secret support. With this release we take the first step towards that by allowing you to reference Kubernetes secrets in container modules. See our Kubernetes Secrets example for more details. We've also added the ability to only run certain groups of tests (or no tests at all) when in dev
mode with the --test-name
and --skip-tests
flags. For example: garden dev --test-names=unit
Furthermore, we've made some changes to our release process. First of all, we'll now be uploading an edge release to Github on every merge to master
. Second, we're moving to a weekly release cycle with releases every Tuesday afternoon (CET). This will allow us to respond faster to your issues and feature requests.
Beyond that, this one was all about squashing bugs!
Changelog
Features
- added glob and test names to dev/test commands (df31b772)
- implemented --skip-tests flag (dde191f6)
- add env var for setting max task concurrency (c3383d23)
- container: allow referencing Kubernetes secrets in container modules (4c603c38)
Improvement
- updated PATH to include all gcloud bin-s (413fd02a)
- dashboard: add taskCancelled support to stack graph page (76c154b6)
- k8s: cluster cleanup command now also cleans build sync dir (69f41982)
- k8s: fail fast on CreateContainerConfigError (557be338)
Bug Fixes
- various issues with path handling on Windows (ea001d40)
- declare latest version of fsevents explicity (f733afc6)
- test fixes and docs update (7616fa38)
- garden can again be run from project subdirs (560604f1)
- hot-reloading and remote builds didn't work on Windows (40133353)
- removed single quote from CREATE TABLE statement (a4b33c5e)
- emit taskComplete when adding cached tasks (e1d49f26)
- cli: fix log inconsistencies (12c242a9)
- core: rsync error when running from dist build (70c3e595)
- core: respect includes/excludes when syncing to build directory (becfcd39)
- helm: add missing command directive to task spec (065b2840)
- k8s: error when copying TLS secrets between namespaces (623a72d3)
- k8s: skip setMinikubeDockerEnv when vm-driver=None (0825c5a0)
- k8s: ensure images built remotely are tagged before publishing (63a2bbab)
- k8s: respect in-cluster builder storage size configuration (6a0c61c2)
- k8s: make sure Service Endpoints are ready at end of status checks (4678f400)
- k8s: build --force would error with cluster-docker and no Dockerfile (710e8458)
- k8s: always flatten resources of kind List (b6368f76)
- k8s: support client cert authentication (2a3848ab)
- k8s: cluster registry only worked when service CIDR was 10.x.x.x/y (609b6b1b)
- task-graph: fix task deduplication (6979f8b5)
- task-graph: use latest version for dedup (83803970)
- task-gtaph: emit taskCancelled events (b6d8846f)
Assets
6
chore(build): use static binary in container image builds
Assets
6
chore(release): bump version to v0.10.1-0 Note, the version in garden-service/package.json and garden-service/package-lock.json is v0.10.1 instead of v0.10.1-0. This is due to a bug in lerna that causes lerna bootstrap to fail when the version number is a pre-release. This shouldn't matter since we'll update the version anyway when we make the proper release.
Assets
6
Yowza! This may be our biggest release ever.
When we first started working on Garden, eighteen months ago, we knew that developing systems locally was a stop-gap solution. With 0.10, we're taking another leap towards providing the best possible developer experience by letting you move your development workflow off your machine, into shared development clusters.
We've published a blog post describing our motivation behind all this.
Shared development environments
Garden can now handle all building and testing in-cluster. This means you no longer need to run Kubernetes locally, but instead have a shared development cluster for your entire team. Each developer has a private namespace in the cluster, but shares the same build and test caches.
Think of how much time you, your team, and CI system waste downloading and building the same images, or testing the exact same combination of code. By moving your development to a shared cluster, each of these operations only needs to happen once.
For more information, see how to prep your cluster, and how to configure Garden to build remotely.
Combine dev and CI
Another advantage of shared development environments is that you can call garden test from CI, pointing it at the same environment you developed in. This will spin up your stack and run all your tests—most of which will be cached from development. You can also use Garden in CI to spin up preview environments, or tear them down.
This greatly simplifies the average CI set-up, as you can get rid of all your scripts that would usually handle this, and no longer need to maintain separate configuration for development and testing.
For more information, see how you can use Garden in CI!
And then some!
We’ve also included a large number of major and minor improvements and fixes,
including much improves deployment status checks for Kubernetes workloads. We now “fail faster” and give much more information when issues are detected while deploying.
For the full list of changes (which is rather long), get a cup of coffee and peruse the changelog below:
BREAKING CHANGES
k8s providers no longer default to /bin/sh -c
as the entrypoint when running pods. This applies to tasks, tests and the run module
command.
The --loglevel
CLI option is now called --log-level
When using OpenFaaS with local-kubernetes
you now need to use the local-openfaas
provider, instead of openfaas
. You also need to
manually delete any existing <my namespace>--openfaas
namespaces from your cluster after upgrading.
Features
- implement version check (9b077946)
- config: add local.username and project.name config keys (8fb9b5fb)
- container: allow configuring # of replicas for container services (ad7c973b)
- k8s: add mechanism for cleaning up unused images in clusters (773365c3)
- add analytics (#819) (a2fa49ec)
- Implement get debug-info command (44f666e0)
- cli: add a dedicated options command (8dd53003)
- container: add configurable CPU and memory limits (77e71df5)
- container: add command option (afbd9539)
- core: providers can depend on and reference configs from each other (a67f5220)
- core: add persistent ID for each working copy (b49ecc37)
- core: allow .yaml endings for Garden config files (3a9195a0)
- k8s: add Kaniko as a builder option (2ccd0395)
- k8s: optionally enable ingress controller for remote k8s (6f321dcd)
- k8s: in-cluster building (5d351025)
Improvement
- k8s: bump default limits and sizes for cluster builder (6ec9f0a7)
- config: allow non-string values to be output directly (52ad5faf)
- config: allow chained conditionals in template strings (095e9436)
- config: explicitly validate sub-paths when applicable (6343603b)
- install: add install script for linux/mac and update docs (dbeb7544)
- k8s: add explicit cluster-init command for remote clusters (0a70a068)
- k8s: more robust and useful deployment status checks (4f1ff3be)
- k8s: don't require manual init when only Tiller is missing (693189b4)
- plugins: define schemas for module outputs and add docs (5f656ac2)
- windows: check for Hyper-V and ask if user wants Docker (21024f82)
- get source maps working in error tracebacks (36959cea)
- cli: rename --loglevel to --log-level + refactor log init (de5e78a3)
- dashboard: add graph filters to global context (73e3f5ca)
- dashboard: add task and test info pane to overview page (e97b8fa7)
- dashboard: add dependencies to each entity card (8b0a4305)
- dashboard: view ingress on lg screens instead of xl (bd28965e)
- k8s: always require manual init for remote clusters (4201dc53)
- service: add project root to config dump (520aadf3)
Performance Improvements
- improve performance of logs command (65afeef8)
Bug Fixes
- update messaging when checking version (afebab2d)
- openfaas: regression in openfaas provider init (bca7a626)
- wrong base image for garden-gcloud container build (c4d2d818)
- container entrypoint executable path should be passed as string (80e7cf18)
- cli: don't log internal fields in error detail (5e02c5df)
- cli: error log could crash if error details contained circular refs (b6bdf870)
- core: chokidar watcher on mac could segfault after reloading configs (b950823c)
- delete-env: delete services before calling cleanupEnvironment (e98485da)
- install: Add -UseBasicParsing to Windows installer (86dacd99)
- k8s: enable publishing container modules when using remote builders (5cfeca24)
- k8s: error when test+task result log exceeded 1MB (04a5a36a)
- k8s: don't store full version object with test+task results (c4e4059d)
- k8s: status checks on resources outside of app namespace would fail (13accce4)
- k8s: unreachable code when kubectl diff errors (29ae098a)
- k8s: handle List resources in manifests properly (487637fc)
- test: fixed flaky test by adding sort (8f8b0a49)
- vcs: error when stat-ing deleted file that's still in git index (3c21ba4a)
- windows: latest zeit/pkg produced broken binary for Windows (868a0d66)
- revisions to
command
option (51fc76ab) - include fixes, docs and refactoring for #778 (14063c06)
- crash when deploy and docker not installed (540edb02)
- some commands terminate with double new line (86fa9816)
- improved error messages for call command (2286a17e)
- always ignore .garden (bb0e2df8)
- analytics: don't use promises and silently fail (85c80f24)
- cli: ensure cli exits with code 0 when help/version called (3e31d9ba)
- container: incorrect parsing of image ID with port in hostname (78e03b71)
- core: don't abort if providers needing manual init are ready (c7becfdd)
- dashboard: stackgraph loses ws status when drawn (112e5825)
- dev-command: prepareEnvironment was called twice (65dc993b)
- integ-tests: only checkout example dir when running locally (0a1b3a2b)
- k8s: fix various issues with Kubernetes API queries (c7839e93)
- k8s: don't require manual init for local-kubernetes provider (83d9efbb)
- k8s: unhelpful error with conflicting namespace (a1161200)
- k8s: avoid concurrency issues when creating port forwards (169aa3c1)
- k8s: avoid normalization issue when installing nginx controller (118b02cd)
- k8s: error when getting debug logs from multi-container Pods (2778c3a8)
- k8s: warn instead of error when cluster services are outdated (fbc4cb5d)
- k8s: handle normalization issue between numbers and strings in diffs (d98ed6fc)
- k8s: make sure we error/init when any system service is missing on init (33f9638b)
- k8s: fix some issues with syncing build context to remote cluster (a5ed2cf8)
- k8s: startup error when using remote kubernetes provider (b15b30f5)
- vcs: error when handling files with spaces in the name (eeff4d46)
Code Refactoring
- moved default-backend image in own repo (650f7a26)
- k8s: update kubernetes API library to 0.10.1 and refactor wrapper (bd54a4e0)
- cli: add header log to commands (51c7efef)
- core: allow setting a custom Garden dir path (43f2ad69)
- core: added manualInit flag to prepareEnvironment handler (66aa4739)
- core: split up plugin handler declarations to individual modules (ea863553)
- k8s: rename "local" build mode to "local-docker" (55d9ceca)
- k8s: nest system garden dir under project garden dir (33019b0a)
Assets
6
Watchers:35 |
Star:1316 |
Fork:65 |
创建时间: 2017-12-03 10:10:59 |
最后Commits: 8天前 |
许可协议:MPL-2.0 |
87142c6