Giter Club home page Giter Club logo

imageswap's Introduction

Table of Contents
  1. About Imagswap
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Imageswap is a simple program written in Go that is used to perform image registry hostname transformations as a Kubernetes mutating webook.

(back to top)

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

  • Go 1.17.1
  • Docker
  • KinD

Installation

To compile only the imageswap binary:

go build -o imageswap main.go

Or, to output to build/_output/bin/

make build

Alternatively, to build the binary and create a container image to host it:

make build-image

(back to top)

Usage

Please see Makefile and internal/deploy/ for materials used to test the webhook locally using KinD. The manifests in internal/deploy/ can be used as a starting place for deploying

(back to top)

Roadmap

All dates are TBD, this project is passively developed

  • Makefile test
    • Unit Testing
  • Makefile fmt
  • Makefile lint
    • golangcli-lint
  • Validating webhook
  • More complete examples
  • CI pipeline
  • Serve on 8080 (insecure)
  • Helm Chart

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the Apache 2.0 License. See LICENSE for more information.

(back to top)

Contact

Tim Seagren - LinkedIn - [email protected]

Project Link: https://github.com/chaospuppy/imageswap

(back to top)

Acknowledgments

(back to top)

imageswap's People

Contributors

chaospuppy avatar

Stargazers

Josiah Ritchie avatar

Watchers

Blake Burkhart avatar  avatar

imageswap's Issues

Project Name

This project name is pretty lame. Please do better

Dynamic Certificate Reloading

Summary

The webhook currently does not support dynamically reloading TLS certificates from disk in the event they are updated (as is the case when using CertManager). This functionality should be updated to negate the need to rollout restart imageswap pods in order to refresh TLS certificates.

Simplify GetCertificate to reload certificate on each request, remove maybeReload and goroutine in newKeypairReloader

Summary

Currently, we are using tls.Config.GetCertificate() to retrieve the certificate from the cert property of keypairReloader. Additionally, we're running a goroutine as part of newKeypairReloader that waits 60 seconds before updating the cert property of keypairReloader.

Because GetCertificate is called upon each ClientHello, this extra gorountine and timer represents an unnecessary step in the process and should be removed, with the process of loading the configured TLS keypair into a keypair object moved into maybeReload, which itself should be called in the function returned by GetCertificate.

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.