Skip to content

Commit

Permalink
Remove unused GATEWAY_ADDRESS env variable and add a feature to extra…
Browse files Browse the repository at this point in the history
…ct service port instead of taking it as hard-coded value through environment variables

Signed-off-by: Burak Sekili <buraksekili@gmail.com>
  • Loading branch information
buraksekili committed Oct 17, 2023
1 parent ff4189a commit cca4d94
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 55 deletions.
3 changes: 0 additions & 3 deletions constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ const (
EnterprisePortalSecretEnabledEnvVar = "ENTERPRISE_PORTAL_SECRET_ENABLED"
BootstrapPortalEnvVar = "BOOTSTRAP_PORTAL"
TykDashboardDeployEnvVar = "TYK_DASHBOARD_DEPLOY"
GatewayAddressEnvVar = "GATEWAY_ADDRESS"
OperatorSecretNameEnvVar = "OPERATOR_SECRET_NAME"
EnterprisePortalSecretNameEnvVar = "ENTERPRISE_PORTAL_SECRET_NAME"
TykAdminFirstNameEnvVar = "TYK_ADMIN_FIRST_NAME"
Expand All @@ -14,10 +13,8 @@ const (
TykAdminPasswordEnvVar = "TYK_ADMIN_PASSWORD"
TykPodNamespaceEnvVar = "TYK_POD_NAMESPACE"
TykDashboardProtoEnvVar = "TYK_DASHBOARD_PROTO"
TykDashboardSvcEnvVar = "TYK_DASHBOARD_SVC"
TykDashboardInsecureSkipVerify = "TYK_DASHBOARD_INSECURE_SKIP_VERIFY"
TykDashboardLicenseEnvVarName = "TYK_DB_LICENSEKEY"
TykDbListenport = "TYK_DB_LISTENPORT"
TykDbLicensekeyEnvVar = "TYK_DB_LICENSEKEY"
TykAdminSecretEnvVar = "TYK_ADMIN_SECRET"
DashboardEnabledEnvVar = "DASHBOARD_ENABLED"
Expand Down
95 changes: 43 additions & 52 deletions data/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

type AppArguments struct {
DashboardHost string
DashboardPort int
DashboardPort int32
DashBoardLicense string
TykAdminSecret string
CurrentOrgName string
Expand All @@ -36,39 +36,20 @@ type AppArguments struct {
OperatorSecretName string
EnterprisePortalSecretEnabled bool
EnterprisePortalSecretName string
GatewayAdress string
BootstrapPortal bool
DashboardDeploymentName string
ReleaseName string
}

var AppConfig = AppArguments{
IsDashboardEnabled: false,
OperatorSecretEnabled: false,
EnterprisePortalSecretEnabled: false,
BootstrapPortal: false,
DashboardProto: "",
DashboardHost: "",
DashboardPort: 3000,
DashBoardLicense: "",
TykAdminSecret: "12345",
CurrentOrgName: "TYKTYK",
Cname: "tykCName",
TykAdminPassword: "123456",
TykAdminFirstName: "firstName",
TykAdminEmailAddress: "tyk@tyk.io",
TykAdminLastName: "lastName",
UserAuth: "",
OrgId: "",
CatalogId: "",
DashboardUrl: "",
TykPodNamespace: "",
DashboardSvc: "",
DashboardInsecureSkipVerify: false,
OperatorSecretName: "",
EnterprisePortalSecretName: "",
GatewayAdress: "",
DashboardDeploymentName: "",
DashboardPort: 3000,
TykAdminSecret: "12345",
CurrentOrgName: "TYKTYK",
Cname: "tykCName",
TykAdminPassword: "123456",
TykAdminFirstName: "firstName",
TykAdminEmailAddress: "tyk@tyk.io",
TykAdminLastName: "lastName",
}

func InitAppDataPreDelete() error {
Expand All @@ -85,17 +66,15 @@ func InitAppDataPostInstall() error {
AppConfig.TykAdminPassword = os.Getenv(constants.TykAdminPasswordEnvVar)
AppConfig.TykPodNamespace = os.Getenv(constants.TykPodNamespaceEnvVar)
AppConfig.DashboardProto = os.Getenv(constants.TykDashboardProtoEnvVar)
AppConfig.DashboardSvc = os.Getenv(constants.TykDashboardSvcEnvVar)
dbPort, err := strconv.ParseInt(os.Getenv(constants.TykDbListenport), 10, 64)
if err != nil {
return err
}
AppConfig.DashboardPort = int(dbPort)

AppConfig.DashBoardLicense = os.Getenv(constants.TykDbLicensekeyEnvVar)
AppConfig.TykAdminSecret = os.Getenv(constants.TykAdminSecretEnvVar)
AppConfig.CurrentOrgName = os.Getenv(constants.TykOrgNameEnvVar)
AppConfig.Cname = os.Getenv(constants.TykOrgCnameEnvVar)
AppConfig.ReleaseName = os.Getenv(constants.ReleaseNameEnvVar)

var err error

dashEnabledRaw := os.Getenv(constants.DashboardEnabledEnvVar)
if dashEnabledRaw != "" {
AppConfig.IsDashboardEnabled, err = strconv.ParseBool(os.Getenv(constants.DashboardEnabledEnvVar))
Expand All @@ -108,7 +87,12 @@ func InitAppDataPostInstall() error {
if err := discoverDashboardSvc(); err != nil {
return err
}
AppConfig.DashboardUrl = GetDashboardUrl()
AppConfig.DashboardUrl = fmt.Sprintf("%s://%s.%s.svc.cluster.local:%d",
AppConfig.DashboardProto,
AppConfig.DashboardSvc,
AppConfig.TykPodNamespace,
AppConfig.DashboardPort,
)
}

operatorSecretEnabledRaw := os.Getenv(constants.OperatorSecretEnabledEnvVar)
Expand All @@ -129,7 +113,6 @@ func InitAppDataPostInstall() error {
}
AppConfig.EnterprisePortalSecretName = os.Getenv(constants.EnterprisePortalSecretNameEnvVar)

AppConfig.GatewayAdress = os.Getenv(constants.GatewayAddressEnvVar)
bootstrapPortalBoolRaw := os.Getenv(constants.BootstrapPortalEnvVar)
if bootstrapPortalBoolRaw != "" {
AppConfig.BootstrapPortal, err = strconv.ParseBool(bootstrapPortalBoolRaw)
Expand All @@ -151,7 +134,8 @@ func InitAppDataPostInstall() error {
}

// discoverDashboardSvc lists Service objects with constants.TykBootstrapReleaseLabel label that has
// constants.TykBootstrapDashboardSvcLabel value and gets this Service's name and assign it to DashboardSvc field.
// constants.TykBootstrapDashboardSvcLabel value and gets this Service's metadata name, and port and
// updates DashboardSvc and DashboardPort fields.
func discoverDashboardSvc() error {
config, err := rest.InClusterConfig()
if err != nil {
Expand All @@ -170,29 +154,36 @@ func discoverDashboardSvc() error {
ls.MatchLabels[constants.TykBootstrapReleaseLabel] = AppConfig.ReleaseName
}

l := labels.Set(ls.MatchLabels).String()

services, err := c.
CoreV1().
Services(AppConfig.TykPodNamespace).
List(context.TODO(),
metav1.ListOptions{
LabelSelector: labels.Set(ls.MatchLabels).String(),
},
)
List(context.TODO(), metav1.ListOptions{LabelSelector: l})
if err != nil {
return err
}

for _, service := range services.Items {
AppConfig.DashboardSvc = service.Name
if len(services.Items) == 0 {
return fmt.Errorf("failed to find services with label %v\n", l)
}

return nil
}
if len(services.Items) > 1 {
fmt.Printf("[WARNING] Found multiple services with label %v\n", l)
}

func GetDashboardUrl() string {
return fmt.Sprintf("%s://%s.%s.svc.cluster.local:%d",
AppConfig.DashboardProto,
AppConfig.DashboardSvc,
AppConfig.TykPodNamespace,
AppConfig.DashboardPort)
service := services.Items[0]
if len(service.Spec.Ports) == 0 {
return fmt.Errorf("svc/%v/%v has no open ports\n", service.Name, service.Namespace)
}
if len(service.Spec.Ports) > 1 {
fmt.Printf("[WARNING] Found multiple open ports in svc/%v/%v \n", service.Name, service.Namespace)
}

if len(service.Spec.Ports) > 0 {
AppConfig.DashboardPort = service.Spec.Ports[0].Port
}
AppConfig.DashboardSvc = service.Name

return nil
}

0 comments on commit cca4d94

Please sign in to comment.