๐Ÿ—๏ธ CraftPort: A Cross-Platform Networking Tool

Simplifying Multi-Cloud Resource Management, One Step at a Time

Managing networking resources across different cloud providers can be complex and time-consuming. In multi-cloud environments, each provider offers unique tools and interfaces, resulting in a fragmented experience for users. Enter CraftPort, an exploratory project that seeks to simplify and unify cloud networking resource management.

The Challenge: Fragmented Multi-Cloud Management

In cloud computing, companies often utilize multiple providers like Azure, AWS, and others to meet their diverse needs. However, each cloud provider has its own tools and interfaces. This fragmentation can lead to inefficiencies, increased complexity, and a higher likelihood of errors in managing networking resources.

CraftPort's Vision

CraftPort sets out to explore a unified approach to cloud networking resource management. Our vision is to offer a consistent, streamlined experience, bridging the gap between various cloud providers. This means providing users with a single command center to manage their cloud networking resources, regardless of their provider.

CraftPort Platform Vision:

Goal: Simplify, Standardize, and Enhance Efficiency

With CraftPort, the goal is to alleviate the challenges associated with multi-cloud networking management. We understand the frustration and productivity loss caused by fragmented tools and inconsistent configurations. To address these issues, we aim to achieve the following:

  • Centralized Management: Say goodbye to the hassle of switching between different cloud provider tools. CraftPort provides a unified interface for managing your cloud networking resources efficiently.

  • Consistent Configurations: Ensure compliance and minimize errors by enforcing uniform network configurations across multiple cloud platforms.

  • Enhanced Efficiency: CraftPort strives to be your single command center for common networking tasks, simplifying resource deployment, management, and troubleshooting.

::img-large

Starting with DNS Management

CraftPort's initial release, v1alpha1, focuses on DNS management. Users can create, delete, update, and retrieve DNS zones and record sets across leading cloud providers such as Azure and AWS. We have plans to expand its capabilities to cover a broader range of networking resources, including:

  • Firewalls
  • Load Balancers
  • Network Security Groups (NSGs)
  • Route Tables
  • Subnets
  • Virtual Networks
  • Gateways

Exploring CraftPort's Design Approach

To illustrate our design approach, CraftPort provides intuitive command examples that showcase the structure of its CLI commands:

Create a network resource

 1Create a network resource.
 2
 3Usage:
 4  craftport create [command]
 5
 6Available Commands:
 7  dns         DNS management
 8  firewall    Firewall management [PLANNED]
 9  lb          Load balancer management [PLANNED]
10  nsg         Network security group management [PLANNED]
11  route-table Route table management [PLANNED]
12  subnet      Subnet management [PLANNED]
13  vnet        Virtual network management [PLANNED]
14  vpn         VPN gateway management [PLANNED]
15
16Flags:
17  -h, --help      help for create
18  -v, --version   version for create
19
20Global Flags:
21      --config string     Config file (default is $HOME/.craftport.yaml)
22  -p, --provider string   Specify the cloud provider (azure, aws, gcp)
23
24Use "craftport create [command] --help" for more information about a command.

Manage DNS zones and record sets

 1Manage DNS zones and record sets.
 2
 3Usage:
 4  craftport create dns [command]
 5
 6Available Commands:
 7  link        Link to DNS zone
 8  recordset   Create Recordset
 9  zone        Create Zone
10
11Flags:
12  -h, --help      help for dns
13  -v, --version   version for dns
14
15Global Flags:
16      --config string     Config file (default is $HOME/.craftport.yaml)
17  -p, --provider string   Specify the cloud provider (azure, aws, gcp)
18
19Use "craftport create dns [command] --help" for more information about a command.

Create Zone

 1CraftPort: Create Zone.
 2
 3Examples:
 4  # Create azure public zone
 5  craftport create dns zone example.com --resource-group sandbox --tags "key=value,key=value" --provider azure
 6
 7  # Create aws public zone
 8  craftport create dns zone example.com --provider aws
 9
10  # Create azure private zone
11  craftport create dns zone example.com --resource-group sandbox --private --tags "key=value,key=value" --provider azure
12
13  # Create aws private zone
14  craftport create dns zone example.com --private --vnet vpc-123456 --vnet-region us-east-1 --provider aws
15
16  # Create zone from YAML file
17  craftport create dns zone -f zone.yaml
18
19  # Sample YAML file
20  apiVersion: craftport.io/v1alpha1
21  kind: Zone
22  metadata:
23    name: example.com
24    provider: "azure"
25  spec:
26    type: public
27    resourceGroup: sandbox-mgmt
28    tags:
29      env: test
30      owner: craftport
31
32  # Note
33  - resource-group is required for azure provider
34  - tags is optional
35
36 for azure provider
37  - private zone (default: false) requires vnet and vnet-region for aws provider
38  - comment is optional for aws provider
39
40Usage:
41  craftport create dns zone NAME or -f FILE [flags]
42
43Flags:
44  -m, --comment string          comment
45  -f, --file string             yaml spec. file
46  -h, --help                    help for zone
47      --private                 private zone
48  -g, --resource-group string   resource group
49  -t, --tags string             tags (key=value,key=value)
50      --vnet string             vnet name
51      --vnet-region string      vnet region
52
53Global Flags:
54      --config string     Config file (default is $HOME/.craftport.yaml)
55  -p, --provider string   Specify the cloud provider (azure, aws, gcp)

Create Recordset

 1CraftPort: Create Recordset.
 2
 3Supported Types: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV, TXT
 4
 5Examples:
 6  # Create azure public recordset
 7  craftport create dns recordset -z example.com -f azure_a.yaml
 8
 9  # Create aws public recordset
10  craftport create dns recordset -z example.com -f aws_a.yaml
11
12  # Create azure private recordset
13  craftport create dns recordset -z example.com -f azure_a.yaml --private
14
15  # Create aws private recordset
16  craftport create dns recordset -z example.com -f aws_a.yaml
17
18  # Sample YAML file
19  apiVersion: craftport.io/v1
20  kind: RecordSet
21  metadata:
22    name: www.example.com
23    provider: azure
24  spec:
25    type: A
26    TTL: 3600
27    zone: example.com
28    resourceGroup: sandbox-mgmt
29    records:
30      ARecords:
31        - ipv4Address: 192.168.0.1
32          ttl: 3600
33
34Usage:
35  craftport create dns recordset [flags]
36
37Flags:
38  -f, --file string   Path to the recordset YAML specification file
39  -h, --help          help for recordset
40      --private       Enable private zone (default: false)
41  -z, --zone string   Specify the DNS zone name for Azure or the zone ID for AWS
42
43Global Flags:
44      --config string     Config file (default is $HOME/.craftport.yaml)
45  -p, --provider string   Specify the cloud provider (azure, aws, gcp)

Conclusion

CraftPort v1alpha1 represents the beginning of an exploration into simplifying and unifying cloud networking resource management. We understand the challenges in managing networking resources across multiple cloud platforms and are committed to finding innovative solutions. Starting with DNS management, we aim to streamline and enhance the multi-cloud experience. Stay tuned as we expand our capabilities to cover a broader range of networking resources.