mirror of
https://github.com/siderolabs/talos.git
synced 2025-10-07 05:31:20 +02:00
Move dashboard package into a common location where both Talos and talosctl can use it. Add support for overriding stdin, stdout, stderr and ctt in process runner. Create a dashboard service which runs the dashboard on /dev/tty2. Redirect kernel messages to tty1 and switch to tty2 after starting the dashboard on it. Related to siderolabs/talos#6841, siderolabs/talos#4791. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
50 lines
1.4 KiB
Go
50 lines
1.4 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 dashboard implements dashboard functionality.
|
|
package dashboard
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
"google.golang.org/grpc/metadata"
|
|
|
|
"github.com/siderolabs/talos/internal/pkg/dashboard"
|
|
"github.com/siderolabs/talos/pkg/grpc/middleware/authz"
|
|
"github.com/siderolabs/talos/pkg/machinery/client"
|
|
"github.com/siderolabs/talos/pkg/machinery/constants"
|
|
"github.com/siderolabs/talos/pkg/machinery/role"
|
|
"github.com/siderolabs/talos/pkg/startup"
|
|
)
|
|
|
|
// Main is the entrypoint into dashboard.
|
|
func Main() {
|
|
if err := dashboardMain(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func dashboardMain() error {
|
|
startup.LimitMaxProcs(constants.DashboardMaxProcs)
|
|
|
|
md := metadata.Pairs()
|
|
authz.SetMetadata(md, role.MakeSet(role.Admin))
|
|
adminCtx := metadata.NewOutgoingContext(context.Background(), md)
|
|
|
|
c, err := client.New(adminCtx,
|
|
client.WithUnixSocket(constants.MachineSocketPath),
|
|
client.WithGRPCDialOptions(grpc.WithTransportCredentials(insecure.NewCredentials())),
|
|
)
|
|
if err != nil {
|
|
return fmt.Errorf("error connecting to the machine service: %w", err)
|
|
}
|
|
|
|
return dashboard.Main(adminCtx, c, 5*time.Second, false)
|
|
}
|