code: func defaultClusterObject(
  	clusterID string,
  	initialCAConfig api.CAConfig,
  	raftCfg api.RaftConfig,
  	encryptionConfig api.EncryptionConfig,
  	initialUnlockKeys []*api.EncryptionKey,
  	rootCA *ca.RootCA,
  	fips bool,
  	defaultAddressPool []string,
  	subnetSize uint32,
  	vxlanUDPPort uint32) *api.Cluster {
  	var caKey []byte
  	if rcaSigner, err := rootCA.Signer(); err == nil {
  		caKey = rcaSigner.Key
  	}
  
  	return &api.Cluster{
  		ID: clusterID,
  		Spec: api.ClusterSpec{
  			Annotations: api.Annotations{
  				Name: store.DefaultClusterName,
  			},
  			Orchestration: api.OrchestrationConfig{
  				TaskHistoryRetentionLimit: defaultTaskHistoryRetentionLimit,
  			},
  			Dispatcher: api.DispatcherConfig{
  				HeartbeatPeriod: gogotypes.DurationProto(dispatcher.DefaultHeartBeatPeriod),
  			},
  			Raft:             raftCfg,
  			CAConfig:         initialCAConfig,
  			EncryptionConfig: encryptionConfig,
  		},
  		RootCA: api.RootCA{
  			CAKey:      caKey,
  			CACert:     rootCA.Certs,
  			CACertHash: rootCA.Digest.String(),
  			JoinTokens: api.JoinTokens{
  				Worker:  ca.GenerateJoinToken(rootCA, fips),
  				Manager: ca.GenerateJoinToken(rootCA, fips),
  			},
  		},
  		UnlockKeys:         initialUnlockKeys,
  		FIPS:               fips,
  		DefaultAddressPool: defaultAddressPool,
  		SubnetSize:         subnetSize,
  		VXLANUDPPort:       vxlanUDPPort,
  	}
  }
docs: // defaultClusterObject creates a default cluster.