Skip to content

Commit

Permalink
Adding an option to (de)activate Pilot integration into the Traefik d…
Browse files Browse the repository at this point in the history
…ashboard

Co-authored-by: Jean-Baptiste Doumenjou <925513+jbdoumenjou@users.noreply.github.com>
  • Loading branch information
tomMoulard and jbdoumenjou committed Mar 22, 2021
1 parent 06fc2c5 commit 1e716a9
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 12 deletions.
4 changes: 4 additions & 0 deletions cmd/traefik/traefik.go
Expand Up @@ -222,6 +222,10 @@ func setupServer(staticConfiguration *static.Configuration) (*server.Server, err
})
}

if staticConfiguration.Pilot != nil {
version.PilotEnabled = staticConfiguration.Pilot.Dashboard
}

// Plugins

pluginBuilder, err := createPluginBuilder(staticConfiguration)
Expand Down
3 changes: 3 additions & 0 deletions docs/content/reference/static-configuration/cli-ref.md
Expand Up @@ -294,6 +294,9 @@ Prefix to use for metrics collection. (Default: ```traefik```)
`--metrics.statsd.pushinterval`:
StatsD push interval. (Default: ```10```)

`--pilot.dashboard`:
Enable Traefik Pilot in the dashboard. (Default: ```true```)

`--pilot.token`:
Traefik Pilot token.

Expand Down
3 changes: 3 additions & 0 deletions docs/content/reference/static-configuration/env-ref.md
Expand Up @@ -294,6 +294,9 @@ Prefix to use for metrics collection. (Default: ```traefik```)
`TRAEFIK_METRICS_STATSD_PUSHINTERVAL`:
StatsD push interval. (Default: ```10```)

`TRAEFIK_PILOT_DASHBOARD`:
Enable Traefik Pilot in the dashboard. (Default: ```true```)

`TRAEFIK_PILOT_TOKEN`:
Traefik Pilot token.

Expand Down
8 changes: 7 additions & 1 deletion pkg/config/static/pilot.go
Expand Up @@ -2,5 +2,11 @@ package static

// Pilot Configuration related to Traefik Pilot.
type Pilot struct {
Token string `description:"Traefik Pilot token." json:"token,omitempty" toml:"token,omitempty" yaml:"token,omitempty"`
Token string `description:"Traefik Pilot token." json:"token,omitempty" toml:"token,omitempty" yaml:"token,omitempty"`
Dashboard bool `description:"Enable Traefik Pilot in the dashboard." json:"dashboard,omitempty" toml:"dashboard,omitempty" yaml:"dashboard,omitempty"`
}

// SetDefaults sets the default values.
func (p *Pilot) SetDefaults() {
p.Dashboard = true
}
6 changes: 6 additions & 0 deletions pkg/config/static/static_config.go
Expand Up @@ -231,6 +231,12 @@ func (c *Configuration) SetEffectiveConfiguration() {
c.Global.SendAnonymousUsage = true
}

// Create Pilot struct to apply default value on undefined configuration.
if c.Pilot == nil {
c.Pilot = &Pilot{}
c.Pilot.SetDefaults()
}

// Disable Gateway API provider if not enabled in experimental
if c.Experimental == nil || !c.Experimental.KubernetesGateway {
c.Providers.KubernetesGateway = nil
Expand Down
20 changes: 12 additions & 8 deletions pkg/version/version.go
Expand Up @@ -24,6 +24,8 @@ var (
StartDate = time.Now()
// UUID instance uuid.
UUID string
// PilotEnabled activate integration of pilot into the dashboard.
PilotEnabled bool
)

// Handler expose version routes.
Expand All @@ -38,15 +40,17 @@ func (v Handler) Append(router *mux.Router) {
router.Methods(http.MethodGet).Path("/api/version").
HandlerFunc(func(response http.ResponseWriter, request *http.Request) {
v := struct {
Version string
Codename string
StartDate time.Time `json:"startDate"`
UUID string `json:"uuid,omitempty"`
Version string
Codename string
StartDate time.Time `json:"startDate"`
UUID string `json:"uuid,omitempty"`
PilotEnabled bool `json:"pilotEnabled"`
}{
Version: Version,
Codename: Codename,
StartDate: StartDate,
UUID: UUID,
Version: Version,
Codename: Codename,
StartDate: StartDate,
UUID: UUID,
PilotEnabled: PilotEnabled,
}

if err := templatesRenderer.JSON(response, http.StatusOK, v); err != nil {
Expand Down
10 changes: 9 additions & 1 deletion webui/src/App.vue
@@ -1,19 +1,27 @@
<template>
<div id="q-app">
<router-view />
<platform-panel />
<platform-panel
v-if="pilotEnabled" />
</div>
</template>

<script>
import { APP } from './_helpers/APP'
import PlatformPanel from './components/platform/PlatformPanel'
import { mapGetters } from 'vuex'
export default {
name: 'App',
components: {
PlatformPanel
},
computed: {
...mapGetters('core', { coreVersion: 'version' }),
pilotEnabled () {
return this.coreVersion.pilotEnabled
}
},
beforeCreate () {
// Set vue instance
APP.vue = () => this.$root
Expand Down
8 changes: 6 additions & 2 deletions webui/src/components/_commons/NavBar.vue
Expand Up @@ -28,7 +28,8 @@
</q-menu>
</q-btn>
</q-tabs>
<platform-auth-state />
<platform-auth-state
v-if="pilotEnabled" />
</div>
</q-toolbar>
</div>
Expand Down Expand Up @@ -58,8 +59,11 @@ export default {
? this.coreVersion.Version
: this.coreVersion.Version.substring(0, 7)
},
pilotEnabled () {
return this.coreVersion.pilotEnabled
},
parsedVersion () {
if (this.version === undefined) {
if (!this.version) {
return 'master'
}
if (this.version === 'dev') {
Expand Down

0 comments on commit 1e716a9

Please sign in to comment.