Comments (3)
Based on our discussion today: the easiest way to do this will be not use k8s.io/client-go
and github.com/knative/serving/pkg/apis/serving/v1
package at all. With that, we need to have a KUBECONFIG file (or construct it in-memory) which complicates the configuration surface quite a bit.
If all we want to support is GKE, we can:
- imitate
gcloud run
cli and accept--cluster-location
and--cluster
options - use those to get GKE cluster info (endpoint and server CA cert)
- use those to construct an http client (using
golang.org/x/oauth2
+/google
) - make API calls to Knative API on the GKE cluster directly
- the tool authenticates to the GKE master endpoint with IAM
roles/container.admin
role (or equivalent Kubernetes RBAC binding inside the cluster, doesn't really matter).
The only downsides I see are that:
- potential data loss/corruption on ksvc object if knative serving APIs add something (even to fields like
metadata:
, and run/v1 package is not updated and picked up in this tool). - dealing with raw JSON and raw endpoints versus using nice client libraries (although, maybe we can actually make
run/v1
work with the k8s endpoint by tweaking some options).
from cloud-run-release-manager.
Thinking of the configuration from the user perspective:
./cloud_run_release_manager -platform=gke [-clusters=<MY_CLUSTER1>,<MY_CLUSTER2>] [-cluster-locations=us-central1-a,us-central1-b] [-namespaces=default] [-project=<PROJECT_ID>]
platform
is by default managed
. We could add support for managing services in CRFM and CRfA at the same time later
For the first implementation of this, we might want to make the optional arguments required. Maybe support a single cluster only
from cloud-run-release-manager.
For the first implementation of this, we might want to make the optional arguments required. Maybe support a single cluster only
I think that'll be the case forever, by design. The tool should manage (1) either FM or CRFA, not both simultaneously, (2) only one cluster at a time.
from cloud-run-release-manager.
Related Issues (20)
- Support Manual Rollback
- Add a minimum time between each step
- stackdriver: Return inconclusive diagnosis when no request in interval
- Automatically detect the default project value
- config: Rename constructor to New
- rollout: Add updated time to health report annotation
- rollout: Add annotations for all health diagnosis
- rollout: Explicitly update traffic configuration in UpdateService
- install with a click of a button HOT 2
- Publish to Pub/Sub after a rollout/rollback have occurred HOT 4
- Include troubleshooting section in README
- Create diagram to visualize parameters HOT 1
- Create a Knative-compatible client HOT 1
- Issue in setup instructions (actAs)
- strict validation for positional arguments
- Verbose logging for project detection
- Permissions issue in setup instructions (metrics read)
- Remove paddings in diagrams about rollout/rollback stages
- -cli-run-interval can be specified without -cli HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cloud-run-release-manager.