- Fix issue where running
operator-sdk test local --up-local
would sometimes leave a running process in the background after exit (#1089)
- Updated the Kubernetes dependencies to
1.13.1
(#1020) - Updated the controller-runtime version to
v0.1.10
. See the controller-runtimev0.1.10
release notes for new features and bug fixes. (#1020) - By default the controller-runtime metrics are exposed on port 8383. This is done as part of the scaffold in the main.go file, the port can be adjusted by modifying the
metricsPort
variable. #786 - A new command
operator-sdk olm-catalog
to be used as a parent for SDK subcommands generating code related to Operator Lifecycle Manager (OLM) Catalog integration, and subcommandoperator-sdk olm-catalog gen-csv
which generates a Cluster Service Version for an operator so the OLM can deploy the operator in a cluster. (#673) - Helm-based operators have leader election turned on by default. When upgrading, add environment variable
POD_NAME
to your operator's Deployment using the Kubernetes downward API. To see an example, runoperator-sdk new --type=helm ...
and see filedeploy/operator.yaml
. #1000 - A new command
operator-sdk generate openapi
which generates OpenAPIv3 validation specs in Go and in CRD manifests as YAML. (#869) - The
operator-sdk add api
command now generates OpenAPIv3 validation specs in Go for that API, and in all CRD manifests as YAML.
- In new Helm operator projects, the scaffolded CR
spec
field now contains the default values.yaml from the generated chart. (#967)
- Make
up local
subcommand respectKUBECONFIG
env var (#996) - Make
up local
subcommand use default namespace set in kubeconfig instead of hardcodeddefault
and also add ability to watch all namespaces for ansible and helm type operators (#996) - Added k8s_status modules back to generation (#972)
- Update checks for gvk registration to cover all cases for ansible (#973 & #1019)
- Update reconciler for ansible and helm to use the cache rather than the API client. (#1022 & #1048 & #1054)
- Update reconciler to will update the status everytime for ansible (#1066)
- Update ansible proxy to recover dependent watches when pod is killed (#1067)
- Update ansible proxy to handle watching cluster scoped dependent watches (#1031)
- A new command
operator-sdk migrate
which adds a main.go source file and any associated source files for an operator that is not of the "go" type. (#887 and #897) - New commands
operator-sdk run ansible
andoperator-sdk run helm
which run the SDK as ansible and helm operator processes, respectively. These are intended to be used when running in a Pod inside a cluster. Developers wanting to run their operator locally should continue to useup local
. (#887 and #897) - Ansible operator proxy added the cache handler which allows the get requests to use the operators cache. #760
- Ansible operator proxy added ability to dynamically watch dependent resource that were created by ansible operator. #857
- Ansible-based operators have leader election turned on by default. When upgrading, add environment variable
POD_NAME
to your operator's Deployment using the Kubernetes downward API. To see an example, runoperator-sdk new --type=ansible ...
and see filedeploy/operator.yaml
. - A new command
operator-sdk scorecard
which runs a series of generic tests on operators to ensure that an operator follows best practices. For more information, see theScorecard Documentation
- The official images for the Ansible and Helm operators have moved! Travis now builds, tags, and pushes operator base images during CI (#832).
- Fixes deadlocks during operator deployment rollouts, which were caused by operator pods requiring a leader election lock to become ready (#932)
- Helm type operator generation support (#776)
- The SDK's Kubernetes Golang dependency versions/revisions have been updated from
v1.11.2
tov1.12.3
. (#807) - The controller-runtime version has been updated from
v0.1.4
tov0.1.8
. See thev0.1.8
release notes for details. - The SDK now generates the CRD with the status subresource enabled by default. See the client doc on how to update the status subresource. (#787)
- Pin controller-runtime version to v0.1.4 to fix dependency issues and pin ansible idna package to version 2.7 (#831)
- The SDK now uses logr as the default logger to unify the logging output with the controller-runtime logs. Users can still use a logger of their own choice. See the logging doc on how the SDK initializes and uses logr.
- Ansible Operator CR status better aligns with conventions. (#639)
- A new command
operator-sdk print-deps
which prints Golang packages and versions expected by the current Operator SDK version. Supplying--as-file
prints packages and versions in Gopkg.toml format. (#772) - Add
cluster-scoped
flag tooperator-sdk new
command (#747) - Add
up-local
flag totest local
subcommand (#781) - Add
no-setup
flag totest local
subcommand (#770) - Add
image
flag totest local
subcommand (#768) - Ansible Operator log output includes much more information for troubleshooting ansible errors. (#713)
- Ansible Operator periodic reconciliation can be disabled (#739)
- Make operator-sdk command work with composed GOPATH (#676)
- Ansible Operator "--kubeconfig" command line option fixed (#705)
- Fix hardcoded CRD version in crd scaffold (#690)
- Use controller runtime library for controller and client APIs
- See migration guide to migrate your project to
v0.1.0
- Service account generation (#454)
- Leader election (#530)
- Incluster test support for test framework (#469)
- Ansible type operator generation support (#486, #559)
- Moved the rendering of
deploy/operator.yaml
to theoperator-sdk new
command instead ofoperator-sdk build
- Added
operator-sdk up
command to help deploy an operator. Currently supports running an operator locally against an existing cluster e.goperator-sdk up local --kubeconfig=<path-to-kubeconfig> --namespace=<operator-namespace>
. Seeoperator-sdk up -h
for help. #219 #274 - Added initial default metrics to be captured and exposed by Prometheus. #323 exposes the metrics port and #349 adds the initial default metrics.
- Added initial test framework for operators #377, #392, #393
- All the modules in
pkg/sdk
have been combined into a single package.action
,handler
,informer
types
andquery
pkgs have been consolidated intopkg/sdk
. #242 - The SDK exposes the Kubernetes clientset via
k8sclient.GetKubeClient()
#295 - The SDK now vendors the k8s code-generators for an operator instead of using the prebuilt image
gcr.io/coreos-k8s-scale-testing/codegen:1.9.3
#319 - The SDK exposes the Kubernetes rest config via
k8sclient.GetKubeConfig()
#338 - Use
time.Duration
instead ofint
forsdk.Watch
#427
- The cache of available clients is being reset every minute for discovery of newely added resources to a cluster. #280