Giter VIP home page Giter VIP logo

akrobateo's Introduction

Kontena Classic

IMPORTANT! This project is deprecated. Please see Kontena Pharos - The Simple, Solid, Certifified Kubernetes Distribution That Just Works!

Build Status Join the chat at https://slack.kontena.io

Kontena Classic is a developer friendly, open source platform for orchestrating applications that are run on Docker containers. It simplifies deploying and running containerized applications on any infrastructure. By leveraging technologies such as Docker, Container Linux and Weave Net, it provides complete solution for organizations of any size.

Kontena Classic is built to maximize developer happiness; it is designed for application developers and therefore does not require ops teams to setup or maintain. Therefore, it is an ideal choice for organizations without aspiration to configure and maintain scalable Docker container infrastructure.

Kontena Classic Introduction

To accelerate and break barriers for containerized application development, Kontena Classic features some of the most essential technologies built-in such as:

  • Multi-host, multi AZ container orchestration
  • Overlay network technology by Weaveworks
  • Zero-downtime dynamic load balancing
  • Abstraction to describe services running in containers
  • Private Docker image repository
  • Kontena Vault - a secure storage for managing secrets
  • VPN access to backend containers
  • Heroku-like application deployment workflow

Kontena Classic supports any application that can run in a Docker container, and can run on any machine that supports CoreOS. You can run Kontena on the cloud provider of your choice or on your own servers. We hope you enjoy!

Learn more about Kontena:

Getting Started

Please see our Quick Start guide.

Contact Us

Found a bug? Suggest a feature? Have a question? Please submit an issue or email us at [email protected].

Follow us on Twitter: @KontenaInc.

Slack: Join the Kontena Community Slack channel.

License

Kontena Classic software is open source, and you can use it for any purpose, personal or commercial. Kontena is licensed under the Apache License, Version 2.0. See LICENSE for full license text.

akrobateo's People

Contributors

gabeduke avatar jakolehm avatar jnummelin 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  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

akrobateo's Issues

Container bins report wrong version

$ docker run --rm registry.pharos.sh/kontenapharos/akrobateo:0.1.0
{"level":"info","ts":1557739040.1625414,"logger":"cmd","msg":"Akrobateo version: latest"}

We need to make the DRONE_TAG visible in the build container. Now it isn't so the build script defaults to latest.

Daemonset Not Deleted

Hello,

I noticed that If the service type is changed back to NodePort, the load balancer Daemonset is not deleted.

akrobateo-lb with single External-IP

Hi there! Love this project and the need for a universal load balancer outside of cloud load balancers.

I've been testing the akrobateo load balancers on a GKE cluster which has 3 worker nodes. It seems that since the cluster has multiple worker nodes that when a service of type:LoadBalancer is created, akrobateo will in turn spin up 3 pods and expose the service port on 3 External IP addresses.

Is there a way with the akrobateo project to act more like a true load balancer where even in a larger worker node cluster the kubernetes service of type:LoadBalancer is only given a single external IP address which acts as the sole entry point into the cluster? Thanks!

Named ports not supported

Hi,

I tried to create a LoadBalancer with a named port in it

apiVersion: v1
kind: Service
metadata:
  name: nginx-http
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: http
  selector:
    app: nginx

Butn the DS then goes into crashLoop because it does not translate correctly to iptables. Logs:

Setting up forwarding from port 80 to 10.106.7.233:http/TCP
iptables v1.6.2: Port `http' not valid

Try `iptables -h' or 'iptables --help' for more information.

As kubernetes supports using named targetPorts this should imho be supported by the LB provider :)

Docs

Some docs are needed :D

Renaming

Taken from #4, #4 (comment)

Name is a bit too generic..

Some options from #4 (comment)

Service Piper
As in this kinda just makes dumb pipes on the node ports for the services

Cabotage
Cabotage (/ˈkæbətɪdʒ, -tɑːʒ/) is the transport of goods or passengers between two places in the same country by a transport operator from another country.

Service Hauler

Service Liner
The regular and advertised service by vessels between given ports within a particular trade.

LB POD Crashloop

Hello,

I tried to deploy this on k8s 1.12.6 by changing an existing service type from NodePort to LoadBalancer. The operator deployment logs shows that it got the event:

{"level":"info","ts":1558264670.0868776,"logger":"service-lb-controller","msg":"Creating a new DS","Request.Namespace":"tqa","Request.Name":"tqa-loadtest-grafana","DS.Namespace":"tqa","DS.Name":"service-lb-tqa-loadtest-grafana"}
{"level":"info","ts":1558264670.2041252,"logger":"service-lb-controller","msg":"Reconciling Service","Request.Namespace":"tqa","Request.Name":"tqa-loadtest-grafana"}
{"level":"info","ts":1558264670.3062572,"logger":"service-lb-controller","msg":"Existing service addresses match, no need to update"}
{"level":"info","ts":1558264670.3077016,"logger":"service-lb-controller","msg":"Reconciling Service","Request.Namespace":"tqa","Request.Name":"tqa-loadtest-grafana"}
{"level":"info","ts":1558264670.3094041,"logger":"service-lb-controller","msg":"Existing service addresses match, no need to update"}

But the DS load balancer POD stayed in crashloopback state without any logs to see what maybe wrong:

service-lb-tqa-loadtest-grafana-jcf9d         0/1     CrashLoopBackOff   7          14m

Also the operator did not show any error logs.

Also when I changed the service type back to NodePort, the daemonset was not deleted.

Any idea what may be wrong? It will be helpful if the LB POD provides some logs as to what issue it may be facing.

default deployment gives rbac error

deployed with deploy folder yamls:

{"level":"info","ts":1558540864.9111614,"logger":"cmd","msg":"failed to initialize service object for metrics: replicasets.apps \"akrobateo-66cccb4bcb\" is forbidden: User \"system:serviceaccount:kube-system:akrobateo\" cannot get resource \"replicasets\" in API group \"apps\" in the namespace \"kube-system\""}
{"level":"info","ts":1558540864.9113507,"logger":"cmd","msg":"Starting the Cmd."}

Select between daemonset and deployment

Using a DaemonSet for LB pods means that a given port can be mapped only in single service per cluster. Then again, a daemonset gives maximum availability. When there's lot of nodes in the cluster a daemonset also results in huge list of external addresses in the service status.

It would be nice to allow the user to select between a deployment and daemonset. The only viable way to configure such things is via annotations on the service. I'd propose the following way:

apiVersion: v1
kind: Service
metadata:
  name: echoserver
  annotations:
    akrobateo.kontena.io/type: deployment # or daemonset
spec:
  type: LoadBalancer
  ports:
  - name: echo
    port: 8080
    targetPort: 8080
    protocol: TCP
  selector:
    app: echoserver

Akrobateo registry (https://registry.pharos.sh) is out of service making it non-operable

Hi,
I'm trying to operate Akrobateo as follows:

  • Cloned the repo

  • Moved to the "deploy" folder

  • Run the following command: "kubectl apply -k ."

According to the error I see, it seems the private Docker registry hosting the image for the Akrobateo Pod is out of service as I get the following error: Get https://registry.pharos.sh/v2/: dial tcp 198.54.117.199:443: connect: connection refused"

Any advice would be very much appreciated.

ip_forward is not enabled

Synopsis

I am following the article at https://blog.kontena.io/akrobateo-general-purpose-loadbalancer-for-k8s/ to setup Akrobateo on my local Kubernetes cluster (bare metal) installed via RKE.

I have removed the default installed RKE ingress-nginx namespace and controller.

I applied 01_role.yaml, 02_service_account.yaml, 03_role_binding.yaml, and 04_operator.yaml without any issues.

I deployed my sample application.

Expected Behavior

Akrobateo should expose the application externally.

> kubectl get services

... should show an external IP address for each of my nodes.

Actual Behavior

Akrobateo pods failed to start. The logs show ip_forward is not enabled.

Looking at akrobateo/lb-image/entrypoint.sh this will happen if cat /proc/sys/net/ipv4/ip_forward doesn't return 0.

I have confirmed on all 3 nodes that...

>cat /proc/sys/net/ipv4/ip_forward
1
> kubectl get services
NAME          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
hello-world   LoadBalancer   10.43.140.99   <pending>     8080:32766/TCP   26m
kubernetes    ClusterIP      10.43.0.1      <none>        443/TCP          122m

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.