Giter Site home page Giter Site logo

cloud-barista / cb-larva Goto Github PK

View Code? Open in Web Editor NEW
9.0 14.0 8.0 1.89 MB

CB-Larva is Cloud-Barista Incubator. The incubator researches and develops essential technologies for multi-cloud.

License: Apache License 2.0

Shell 15.50% Go 56.39% HTML 7.64% CSS 16.52% JavaScript 3.20% Makefile 0.75%
multi-cloud incubator cb-larva cb-network cb-subnet

cb-larva's Introduction

License

Read this in other languages: English, 한국어

CB-Larva: Cloud-Barista Incubator

Welcome to Cloud-Barista Incubator (for short CB-Larva) 👶😆

We incubate (research and develop) the new technologies in order to “Contact to the Multi-Cloud”. Proof of concept (POC) of new technologies will be performed in this repostory. Contributions are always welcome. 😍

Note that, you can use and share useful information at Cloud-Barista's coffeehouse.

Challenges in Cloud-Barista

CB-Larva mainly considers multi-cloud network technology (cb-network) for now.

The topics below are wide open.

  • cb-storage: Multi-cloud storage technology to support storage for the distributed cloud services
  • cb-secret: Secret(e.g., configs, credentials, DB access information) management independently and efficiently from source repositories. It will be researched in a private repository(It has secrets :)). If you have any interest in it, feel free to contact me.
  • but not limited.

We’re waiting for your creative ideas. 😊

cb-larva's People

Contributors

atg0831 avatar chobobdev avatar hermitkim1 avatar seokho-son avatar shivamgupta-sg avatar yunkon-kim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

cb-larva's Issues

Rename cb-network server to controller at the right time

It's necessary to rename the cb-network server to avoid misunderstanding.

By applying the etcd, the base structure and control mechanism of cb-network has been changed to an asynchronous way.
(The watch mechanism is applied.)

However, the terms server and agent may be misunderstood as a directly connected structure and performing synchronous operations. (Actually, the existing structure was also not directly connected :-D)

Cloud-Barista Community suggested me the cb-network controller, and I like it.

Thus, I'd like to apply it at the right time. (May be the next tagging)

Integrate cb-network agent to CB-Tumblebug

What would you like to be added
: Add a installation function of cb-network agent on CB-Tumblebug
Ref: #101 (comment)

Why is this needed
: When a user creates MCIS, the cb-network could be installed on MCIS depending on an installation option (e.g., true/false)

Resolve lint error

The below errors were issued by 'golangci-lint'
Error: Error return value of cbnet.CBNet.Write is not checked (errcheck)
Error: Error return value of cbnet.listenConnection.WriteToUDP is not checked (errcheck)
Error: Error return value of cbnet.CBNet.Write is not checked (errcheck)
Error: Error return value of lstnConn.WriteToUDP is not checked (errcheck)
Error: SA9003: empty branch (staticcheck)
Error: SA9003: empty branch (staticcheck)
Error: SA9003: empty branch (staticcheck)
Error: S1005: unnecessary assignment to the blank identifier (gosimple)
Error: SA5003: defers in this infinite loop will never run (staticcheck)
Error: issues found

Issue to retrieve a host's public IP address from the networking rule

What happened
: When retrieving public IP address, the agent sometimes access an index out of range

What you expected to happen
: It makes the creation of the cb-network fail.

How to reproduce it (as minimally and precisely as possible)
: I will add a new function for that.

Need tunneling for TCP packets

Current CB-Net (PoC) makes a common subnet.

VMs using the common subnet can communicate with each other by tunneling.

Now, CB-Net supports UDP packets. For example,

  1. Read UDP packet (Later, TCP packet could be read)
  2. Encapsulate the packet by UDP header (No change this)
  3. Send it to the destination

It's not easy for me to decide to add tunneling for TCP packets.

If necessary, it will be added later.

golangci-lint not to print line number

[Proposal]
Update workflow

    steps:
    - name: Checkout source code
      uses: actions/checkout@v2
    
    - name: Install golangci-lint
      run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.34.1      
    
    - name: Run golangci-lint
      run: $(go env GOPATH)/bin/golangci-lint run

Assign VM ID (host ID) to cb-network agent

What would you like to be added
: A method to assign VM ID to the cb-network agent

Why is this needed
: It's because a host needs a unique VM ID to join the CLADNet and obtain an IP address.

Improve the way to allocate IP to a network interface

I'm thinking of improving the IP allocation method.

I tried to assign an IP address for the cb-network to a virtual machine (VM) as part of the networking rule update.

The above process can skip one step, but I have seen several cases that IP is not assigned.

After analyzing the cause, I will improve it.

A plan to construct a MCIS-based cb-network test environment

1. MCIS 생성 및 삭제 테스트 수행

  1. 각 CSP(최소 3개)의 crediential 생성 가이드 작성 - 참고
  2. CB-Spider 컨테이너 구동 by CB-TB's setcbsp.sh (컨테이너 구동)
  3. CB-Tumblebug 구동 by setcbtb.sh (소스코드 빌드)
  4. credentials.conf 작성
  5. Test 스크립트를 활용한 MCIS 생성 및 삭제 테스트 수행
./testAll-mcis-mcir-ns-cloud.sh aws 2 kimy
./cleanAll-mcis-mcir-ns-cloud.sh aws 2 kimy

./testAll-mcis-mcir-ns-cloud.sh gcp 2 kimy
./cleanAll-mcis-mcir-ns-cloud.sh gcp 2 kimy

./testAll-mcis-mcir-ns-cloud.sh azure 2 kimy
./cleanAll-mcis-mcir-ns-cloud.sh azure 2 kimy

2. MCIS에 cb-network controller 및 agent 배치

[TBD]
cb-network 설치 스크립트 작성
deploy-xxx.sh 를 활용하여 배치

3. cb-network 테스트 수행

[TBD]

Improve the update mechanism of host network information and networking rule

The current mechanism can send host network information and continuously update the networking rule of a certain group by watching the function of the etcd.

Every time the agent is executed, the agent tries to update its host network information even if the host information is not changed.

By this update event, the watch work of other agents is unnecessarily operated.

Thus, I'd like to improve this mechanism.

[To-Be]

  1. Watch "networking-rule/{group-id}"
  2. Get "networking-rule/{group-id}/{host-id}"
  3. If exist, set the networking rule to the host
  4. Compare-And-Swap (CAS) "host-network-information/{group-id}/{host-id}" periodically
    Note - the code block to update the networking rule is a critical section.

[As-Is]

  1. Watch "networking-rule/{group-id}"
  2. Put "host-network-information/{group-id}/{host-id}"

A mechanism to utilize CLADNet ID created by users

What would you like to be added
: A mechanism to utilize CLADNet ID

Why is this needed
: It is needed to support multi-CLADNet for multi-MCIS.

A user (administrator) can request and get a network CIDR block for CLADNet.

Thus, a mechanism to utilize the network CIDR block in cb-network controller and agent.

Watch function runs many times

What happened
: Watch function runs many times.

What you expected to happen
: The issue occurs from "watch with revision"

Improve cb-network's AdminWeb

  • Enable Websocket on AdminWeb (Backend)
  • Watch changes of cb-network by using the etcd client
  • Remove MQTT from AdminWeb (Backend and frontend)

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.