maistra / istio-workspace Goto Github PK
View Code? Open in Web Editor NEWSafely develop and test on any Kubernetes cluster without affecting others.
License: Apache License 2.0
Safely develop and test on any Kubernetes cluster without affecting others.
License: Apache License 2.0
Currently, we directly delegate to Telepresence CLI to start local development flows. Providing strategies such as --swap-deployment
. This requires every user to have certain privileges, which might be problematic in day-to-day usage in the teams.
To mitigate this challenge we could move this responsibility to a dedicated controller run in the cluster which will take care of setting up pods properly to have telepresence images running.
Resulting in
T: Starting network proxy to cluster using the existing proxy Deployment details-v1-test
T: Failed to find deployment details-v1-test:
T: No resources found.
T: Error from server (NotFound): deployments.extensions "details-v1-test" not found
T: Exit cleanup in progress
Set up docs generation pipeline. Contribution/dev guide can be a good skeleton to start with
Paths to consider:
Potentially integrating it with Netlify.
in case of executing ike
as interactive / user-driven shell tool we might want to have logging in the plain text enabled, as that's easier to read for a human.
When we execute operator-related bits on the server, however, we should produce structured logging.
This issue is intended to gather potential solutions, as we definitely need a better way to handle this.
Currently, e2e rely on --offline to avoid Session creation
Should be updated to do:
make deploy-operator
make deploy-sample-bookinfo (missing. services, gateway, virtualservices, destinationrules)
ike develop --deployment details-v1?
Introduce a step in CircleCI build which
make format
Look at the operator test framework
If .gitignore
is found in the folder ike
is watching we should exclude the same paths from watch
.
When changes are made on the files in the specified locations we should rebuild the project if defined how and re-run telepresence session.
This should be enabled if ike develop
has --watch
flag provided (or is set in the cfg file). This should be a list of directory patterns to observe and re-run the build and telepresence process when a change occured.
By default both build
and run
steps are executed when calling ike develop
, unless --run-only
flag is specified.
With config file
develop:
deployment: test
run: "python3 server.py"
port: 5555
and CLI call:
$ ike develop -r './test.sh'`
Telepresence should be called with --run './test.sh'
, but is with --run 'python3 server.py'
.
The D/DC config found on the server would have some ports defined. The ike
CLI would reuse this information to auto set the --port
parameter.
If you have multiple ports exposed - exposed all of them - get free local ports to be mapped to D/DC.
List all the exposed ports as part of the command output.
To automate dependency updates we should add Dependabot to this repo.
That probably should be done when we move to some org.
Binary download v defined in Makefile:
https://github.com/aslakknutsen/istio-workspace/blob/master/Makefile#L44
Code dependency v defined in Gopkg:
https://github.com/aslakknutsen/istio-workspace/blob/master/Gopkg.toml#L60
Unify?
Docs for e.g. --run
As a first cut, following command:
$ ike serve --deployment name --port 8000 --run 'python3 server.py'`
should result in invoking telepresence as part of it
telepresence --swap-deployment name --expose 8000 --method inject-tcp --run python3 server.py;'
Instead of relying on CLI flags we should give the user the ability to specify common / infrequently changed configuration items through other means, such as environment variable (prefixed with IKE_
) and yaml file.
So instead of e.g. invoking ike develop --deployment NAME --method inject-tcp
developer can set IKE_DEVELOP_DEPLOYMENT=NAME
and have config file (.ike.config
sitting in the folder from which the command is invoked) with content:
develop:
method: inject-tcp
instead.
Following order of precedence should be preserved when calling a command (where each item takes precedence over the item below, e.g. flag will always be the most important one):
Avoid manipulating flags deep down in code.
If no DestinationRule found with matching name, one should be created.
It turned out we have to make quite a bit of cluster mgmt commands before we are able to execute e2e tests on circleci. At this point what was supposed to be simple setup/teardown part of e2e-tests in ginkgo code turned out to grow a bit too much.
We should move most of the cluster setup into make file instead, so that we can conveniently use it both for CI and while working locally with the code.
If no VirtualService found with matching name, one should be created.
Support creating a Session when using Openshift style Kinds, e.g. DeploymentConfig
Replace https://github.com/aslakknutsen/istio-workspace/blob/c6e328d39196698bb67fcd25a831a82d52f80ab1/pkg/istio/cli_helper.go with go client.
oc apply
to create sessionoc get session
oc delete session
Find the minimal auth level required to run the client side
While running CLI check if there's newer version released and suggest user the update path
Create CLI tool enabling developing on prod
Currently, we rely on default namespace being defined in kube context. This, however, limits our testing possibilities, as we might want to use ike
for two different namespaces at the same time.
Since telepresence allows to specify --namespace
as an argument we should add corresponding flag and delegate.
ike
is invokedhelp
with all available commandsIgnore common project files which should not be watched:
Currently, hardcoded to "v1-test".
Possibly rely on session name as a suffix to the target v.
Affects mutateDestinationRule
and mutateVirtualService
Kube client is hardcoded to read โ/var/run/secrets/kubernetes.io/serviceaccount
which can't be found under TP as everything is mounted under $TELEPRECENSE_ROOT.
Possible fixes:
Workaround:
Rely on ENV KUBERNETES_CONFIG and point to a Kube Config file pointing to the cluster/user/context. Requires sharing prod tokens on the local machine.
Currently we only support directory paths to watch for changes. In addition, we should let users define glob patterns, so they can limit files to react on.
src/main/**/*.java
) are defined, the watch is applied on the current directoryspec:
refs:
- name: x-deploy
strategy: telepresence
args:
version: 100.2
- name: y-deploy
strategy: image
args:
image: x/org:latest
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.