-
Notifications
You must be signed in to change notification settings - Fork 63
Description
Objectives
- Reduce the number of binaries and images that need to be maintained.
- Eliminate complex code that is never used in production.
- Make the setup Github action (Kubernetes-based Sigstore) as lean as possible.
Proposed Changes
Deprecate and remove the createcerts command.
Why
- This is not used in production (for the Sigstore organization).
- Its objective - to automatically create the signing key and certificate for the Fulcio CA when using the fileca certificate authority mode - is easily accomplished with a few lines of shell using the openssl command and using the results to create Kubernetes Secrets.
- Since we only use the fileca mode for development and testing, generating these secrets securely is not a concern for our purposes.
- Creating the secret internally as a Kubernetes process necessitates that clients that require the root CA, such as the CT log, retrieve it from Fulcio’s rootCert HTTP endpoint. We don’t want to continue to encourage this practice, preferring instead to generate keys externally and distribute them in a secure manner, such as via TUF.
How
- Update the
hack/setup-scaffolding.shandhack/setup-scaffolding-form-release.shscripts to generate the private key and self-signed CA and inject them as Secrets in the cluster for Fulcio. Change CTLog to accept a root PEM directly instead of fetching it from therootCertsAPI. - Change the default value of createcerts.enabled from true to false in the Fulcio Helm chart, and deprecate its usage.
Deprecate and remove rekor-createsecret and createcertchain
Why
For the same reasons as above - remove the dependency on a service's public endpoint and use an out-of-band mechanism to securely distribute key material instead.
Remove Trillian manifests
Why
There are Tessera-based replacements for the Trillian log server backend. The complexity of maintaining a relational database and multiple Trillian scripts for preparing and tracking the state of the tree is unnecessarily burdensome.
How
- Change the
ct_serverimage to TesseraCT (already part of Deployment of tile-based CT log rekor-tiles#73).
a. This removes the use ofcreatectconfigfrom Scaffolding and removes the use ofcreatetreeas a dependency of the CT log.
b. Future: deprecate the ctlog Helm chart entirely once TesseraCT is well used in production. - Change the Rekor service to Rekor v2.
a. This fully removes the use ofcreatetreefrom the Scaffolding setup scripts.
b. Enables removing all Trillian Kubernetes manifests.
c. Future: deprecate the rekor Helm chart entirely.
Move utility commands to better locations
Why
Scaffolding has become a grab-bag of tools that have no better home. We need to slim down Scaffolding to fulfill its primary purpose, which is automating Kubernetes deployments with minimal manual intervention. The only Go commands that should live in Scaffolding should be those that are used as images in Jobs managed by helm-charts.
How
-
Move
create-tink-keysetto sigstore/sigstore (public) or to sigstore/public-good-instance (private). This command is not used in helm charts, it is run externally before deployment. -
Move
proberto sigstore/sigstore-probers. -
Deprecate (do not remove):
cloudsqlproxy(Trillian)createcerts(Fulcio)createctconfig(CTLog/ct_server)rekor-createsecret(Rekor v1)createcertchain(TSA)createdb(Trillian)createtree(Trillian)updatetree(Trillian)
-
Simplify/rewrite or move test-only commands (exact work TBD)
managectrootsverifyfulciogetoidctoken
Replace all ko-based Kubernetes manifests with helm-charts
Why
- The Kubernetes manifests in Scaffolding are not used in production and diverge heavily from the configuration that is used in production.
- The charts in helm-charts have no functional testing and are only ever “tested” in live environments.
- The burden of maintaining two separate Kubernetes configuration repositories is unnecessarily high.
How
The exact manner of building images with ko and then injecting them into helm-charts still needs further exploration, I’m not sure if we’ll still be able to use ko apply or ko resolve for this.
Comments welcome
Is Scaffolding being used in a way beyond 1) CI testing and 2) glue jobs for helm-charts that I'm not aware of and that these changes would adversely affect?