mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-21 14:41:12 +02:00
This PR will introduce a `-p/--exposed-ports` flag to talosctl. This flag will allow us to enable port forwards on worker nodes only. This will allow for ingresses on docker clusters so we can hopefully use ingress for Arges initial bootstrapping. I modeled this after how KIND allows ingresses [here](https://kind.sigs.k8s.io/docs/user/ingress/) Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package docker
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/talos-systems/talos/internal/pkg/provision"
|
|
)
|
|
|
|
// Create Talos cluster as a set of docker containers on docker network.
|
|
//
|
|
//nolint: gocyclo
|
|
func (p *provisioner) Create(ctx context.Context, request provision.ClusterRequest, opts ...provision.Option) (provision.Cluster, error) {
|
|
var err error
|
|
|
|
options := provision.DefaultOptions()
|
|
|
|
for _, opt := range opts {
|
|
if err = opt(&options); err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if err = p.ensureImageExists(ctx, request.Image, &options); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
fmt.Fprintln(options.LogWriter, "creating network", request.Network.Name)
|
|
|
|
if err = p.createNetwork(ctx, request.Network); err != nil {
|
|
return nil, fmt.Errorf("unable to create or re-use a docker network: %w", err)
|
|
}
|
|
|
|
var nodeInfo []provision.NodeInfo
|
|
|
|
fmt.Fprintln(options.LogWriter, "creating master nodes")
|
|
|
|
if nodeInfo, err = p.createNodes(ctx, request, request.Nodes.MasterNodes(), &options); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
fmt.Fprintln(options.LogWriter, "creating worker nodes")
|
|
|
|
var workerNodeInfo []provision.NodeInfo
|
|
|
|
if workerNodeInfo, err = p.createNodes(ctx, request, request.Nodes.WorkerNodes(), &options); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
nodeInfo = append(nodeInfo, workerNodeInfo...)
|
|
|
|
res := &result{
|
|
clusterInfo: provision.ClusterInfo{
|
|
ClusterName: request.Name,
|
|
Network: provision.NetworkInfo{
|
|
Name: request.Network.Name,
|
|
CIDR: request.Network.CIDR,
|
|
GatewayAddr: request.Network.GatewayAddr,
|
|
MTU: request.Network.MTU,
|
|
},
|
|
Nodes: nodeInfo,
|
|
},
|
|
}
|
|
|
|
return res, nil
|
|
}
|