Giter Club home page Giter Club logo

istio-workspace's People

Contributors

alien-ike avatar aslakknutsen avatar bartoszmajsak avatar dependabot-preview[bot] avatar dependabot[bot] avatar humpheh avatar l0rd avatar robertpanzer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

istio-workspace's Issues

Controller to handle Telepresence development modes

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.

Telepresence --deployment does not support Openshift DeploymentConfig

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

Docs generation

Set up docs generation pipeline. Contribution/dev guide can be a good skeleton to start with

Paths to consider:

  • plain old asciidoc (arquillian way with docker image generating github pages)
  • antora based docs

Potentially integrating it with Netlify.

Logging format handling

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.

Update e2e to use bookinfo and use ike operator

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?

istio-workspace issue/PR workflow

  • templates for bugs and PRs
  • review and streamline labels
  • manage labels as code / github app
  • conventions and bots to keep them under a leash

Unit test Session Reconciler

Look at the operator test framework

  • Separate object conversion logic out of session.go
  • Separate between Object conversion/sync and server update

Watching file changes to re-run the dev mode process

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.

Auto expose ports based on D/DC port setup

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.

Add dependabot

To automate dependency updates we should add Dependabot to this repo.

That probably should be done when we move to some org.

Wrap telepresence in CLI command

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;'

Provide ability to specify command configuration from other sources than their flags

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):

  • flag
  • environment variable
  • config file entry
  • default (if specified)

Streamline cluster setup process

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.

Openshift support

Support creating a Session when using Openshift style Kinds, e.g. DeploymentConfig

Version update hint

While running CLI check if there's newer version released and suggest user the update path

Ike CLI

Create CLI tool enabling developing on prod

Ability to specify a namespace we want to develop against

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.

Scaffold CLI (run and version flag)

  • executes current handler code when ike is invoked
  • shows help with all available commands
  • prints version (project + build metadata, golang runtime, operator sdk version)

Kube golang client InContainer fails in Telepresence session due to file mounts of SA Token

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:

  • Fix Kube client
  • chroot tp?

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.

https://github.com/kubernetes/client-go/blob/6134db91200ea474868bc6775e62cc294a74c6c6/rest/config.go#L401

Watch should support glob patterns for inclusions

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.

  • if only relative patterns (e.g. src/main/**/*.java) are defined, the watch is applied on the current directory
  • if an absolute paths are defined the relative patterns should be applied on those instead

API for choosing clone strategy

  • Teleprecence
  • Pure deployment
  • Squash?
spec:
  refs:
    - name: x-deploy
      strategy: telepresence
      args:
        version: 100.2
    - name: y-deploy
      strategy: image
      args:
        image: x/org:latest

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.