Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hosturl changes #34

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
15 changes: 0 additions & 15 deletions charts/devtron/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,6 @@ secrets:
# value: "#########"

configs:
BASE_URL_SCHEME: "http"
#url without scheme and without trailing '/'
BASE_URL: "www.example.com"
#DEX_CONFIG: |-
# connectors:
# - type: oidc
# id: google
# name: Google
# config:
# issuer: https://accounts.google.com
# clientID: xxxxxxxx-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com
# clientSecret: xxxxxxxxxxxxxxxxx
# redirectURI: <BASE_URL_SCHEME>://<BASE_URL>/api/dex/callback
# hostedDomains:
# - example.com
DEFAULT_CD_LOGS_BUCKET_REGION: "change-me"
DEFAULT_CACHE_BUCKET: "change-me"
DEFAULT_CACHE_BUCKET_REGION: "change-me"
Expand Down
2 changes: 1 addition & 1 deletion install/devtron-installer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ metadata:
name: installer-devtron
namespace: default
spec:
url: https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/installation-script
url: https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/hosturl-changes/installation-script
3 changes: 0 additions & 3 deletions install/devtron-operator-configs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@ metadata:
name: devtron-operator-cm
namespace: devtroncd
data:
BASE_URL_SCHEME: "http"
#url without scheme and without trailing '/'
BASE_URL: "change-me"
DEX_CONFIG: "change-me"
DEFAULT_CD_LOGS_BUCKET_REGION: "change-me"
DEFAULT_CACHE_BUCKET: "change-me"
DEFAULT_CACHE_BUCKET_REGION: "change-me"
Expand Down
144 changes: 6 additions & 138 deletions installation-script
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@ operatorConfigMap = kubectl get cm -n devtroncd devtron-operator-cm;
postgresqlPassword = jsonSelect(operatorSecret, "data.POSTGRESQL_PASSWORD");
acdPassword = jsonSelect(operatorSecret, "data.ACD_PASSWORD");
webHookToken = jsonSelect(operatorSecret, "data.WEBHOOK_TOKEN");
grafanaPassword = jsonSelect(operatorSecret, "data.GRAFANA_PASSWORD");
azureAccountKey = jsonSelect(operatorSecret, "data.AZURE_ACCOUNT_KEY");

baseURLScheme = jsonSelect(operatorConfigMap, "data.BASE_URL_SCHEME");
baseURL = jsonSelect(operatorConfigMap, "data.BASE_URL");
dexConfig = jsonSelect(operatorConfigMap, "data.DEX_CONFIG");

defaultCDLogsBucketRegion = jsonSelect(operatorConfigMap, "data.DEFAULT_CD_LOGS_BUCKET_REGION");
defaultCacheBucket = jsonSelect(operatorConfigMap, "data.DEFAULT_CACHE_BUCKET");
defaultCacheBucketRegion = jsonSelect(operatorConfigMap, "data.DEFAULT_CACHE_BUCKET_REGION");
Expand Down Expand Up @@ -42,32 +39,28 @@ base64DecoderSuffix = ` | base64 -d | tr -d ':\n'`;
if !postgresqlPassword {
log("postgresql password is mandatory");
}
if !baseURL {
log("baseURL is mandatory");
}

argocd = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/argocd.yaml");
clair = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/clair.yaml");
clairConfig = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/clair-config.yaml");
dashboard = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/dashboard.yaml");
dashboard = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/hosturl-changes/yamls/dashboard.yaml");
gitSensor = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/gitsensor.yaml");
guard = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/guard.yaml");
postgresql = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/postgresql.yaml");
imageScanner = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/image-scanner.yaml");
kubewatch = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/kubewatch.yaml");
lens = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/lens.yaml");
migrator = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/migrator.yaml");
migrator = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/hosturl-changes/yamls/migrator.yaml");
natsOperator = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/nats-operator.yaml");
natsServer = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/nats-server.yaml");
natsStreaming = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/nats-streaming.yaml");
notifier = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/notifier.yaml");
devtron = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/devtron.yaml");
notifier = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/hosturl-changes/yamls/notifier.yaml");
devtron = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/hosturl-changes/yamls/devtron.yaml");
devtronDexIngress = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/devtron-dex-ingress.yaml");
workflow = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/workflow.yaml");
serviceAccount = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/serviceaccount.yaml");
namespace = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/namespace.yaml");
externalSecret = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/external-secret.yaml");
grafana = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/grafana.yaml");
rollout = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/rollout.yaml");
minio = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/yamls/minio.yaml");

Expand All @@ -89,124 +82,8 @@ natsStreamingOverride = download("https://raw.githubusercontent.com/devtron-labs
devtronDexIngressOverride = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/updates/yamls/devtron-dex-ingress.yaml");
workflowOverride = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/updates/workflow.yaml");
externalSecretOverride = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/updates/external-secret.yaml");
grafanaOverride = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/updates/grafana.yaml");
rolloutOverride = download("https://raw.githubusercontent.com/devtron-labs/devtron-installation-script/main/updates/rollout.yaml");

#grafana
grafanaSecret = kubectl get -n devtroncd secret devtron-grafana-cred-secret;
hasgrafana = kubectl get -n devtroncd deployment devtron-grafana;
grafanaPassword = jsonSelect(grafanaSecret, "data.admin-password");
if !grafanaPassword {
log ("not found");
grafanaPassword = shellScript passwordGen;
}
grafanaPasswordPlain = base64DecoderPrefix + `echo "` + grafanaPassword + `" | tr -d ':\n' ` + base64DecoderSuffix;
grafanaPasswordPlain = shellScript grafanaPasswordPlain;
kubeYamlEdit(grafana, "data.admin-password", grafanaPassword, `/Secret//devtron-grafana-cred-secret`);
grafanaUrl = baseURLScheme + "://%s:%s@" + baseURL + "/grafana";
grafanaUrlWithPwd = baseURLScheme + "://admin:"+ grafanaPasswordPlain + "@" + baseURL + "/grafana";

grafanaIni = `[analytics]
check_for_updates = true
[auth.anonymous]
enabled = true
org_name = devtron-metrics-view
org_role = Viewer
[grafana_net]
url = https://grafana.net
[log]
mode = console
[paths]
data = /var/lib/grafana/data
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning
[security]
allow_embedding = true
[server]
root_url = ` + baseURLScheme + "://" + baseURL + `/grafana
serve_from_sub_path = true
[users]
allow_org_create = true
`;
kubeYamlEdit(grafana, `data.grafana\.ini`, grafanaIni, `/ConfigMap/devtroncd/devtron-grafana`);
grafana = kubectl apply -n devtroncd grafana -u grafanaOverride;
log("setup grafana");

if !hasgrafana {
createOrgScript = shebang + `
sleep 50
ORG_ID=$( curl -d '{"name":"devtron-metrics-view"}' -H "Content-Type: application/json" -X POST '` + grafanaUrlWithPwd + `/api/orgs' )
echo $ORG_ID
`;
createOrg = shellScript createOrgScript;
log("created org " + createOrg);

orgId = jsonSelect(createOrg, "orgId");
if !orgId {
orgId = "2";
}

activeOrgScript = shebang + `
curl -X POST '` + grafanaUrlWithPwd + `/api/user/using/` + orgId +`'`;
activeOrg = shellScript activeOrgScript;
log("activated org");

setPreferenceScript = shebang + `
curl -X PUT -H "Content-Type: application/json" -d '{"homeDashboardId":0,"theme":"light","timezone":"browser"}' '`+ grafanaUrlWithPwd + `/api/org/preferences'`;
setPreference = shellScript setPreferenceScript;
log("set preference");

prometheusDatasourceScript = shebang + `
curl '` + grafanaUrlWithPwd + `/api/datasources' \
-H 'content-type: application/json' \
-H 'x-grafana-org-id: ` + orgId + `' \
--data-raw '{"name":"Prometheus-devtron","type":"prometheus","access":"proxy","isDefault":true}'
`;
prometheusDatasource = shellScript prometheusDatasourceScript;
log("data source setup step 1");

datasourceId = jsonSelect(prometheusDatasource, "datasource.id");
log("datasource id " + datasourceId);

prometheusDatasourceScriptUpdate = shebang + `
curl '` + grafanaUrlWithPwd + `/api/datasources/` + datasourceId + `' -X PUT \
-H 'content-type: application/json' \
-H 'x-grafana-org-id: ` + orgId + `' \
--data-raw '{"id":` + datasourceId +` ,
"orgId":` + orgId + `,
"name":"Prometheus-devtron","type":"prometheus","access":"proxy",
"url":"` + prometheusUrl + `",
"basicAuth":true,"jsonData":{},"version":1}'
`;
prometheusDatasourceUpdate = shellScript prometheusDatasourceScriptUpdate;
log("data source setup step 2");

grafanaDashboardProvider = `
apiVersion: 1
providers:
- disableDeletion: true
editable: false
folder: ""
name: devtron-provider
options:
path: /var/lib/grafana/dashboards/devtron-provider
orgId: `+ orgId + `
type: file
`;

grafanaCm = kubectl get -n devtroncd cm devtron-grafana;
jsonEdit(grafanaCm, `data.dashboardproviders\.yaml`, grafanaDashboardProvider);
grafanaCm = kubectl apply -n devtroncd grafanaCm;
log("setup up grafana cm with provider yaml");

allDevtroncdPo = kubectl get po -n devtroncd;
grafanaPodnamePattern = `items.#(metadata.name%"devtron-grafana*").metadata.name`;
grafanaPodname = jsonSelect(allDevtroncdPo, grafanaPodnamePattern);
grafanaPoddelete = kubectl delete -n devtroncd po grafanaPodname;
log("deleted grafana pod to reload configmap");
}

namespaces = kubectl apply namespace;
log("created namespaces");
sa = kubectl apply serviceAccount;
Expand Down Expand Up @@ -241,13 +118,9 @@ helmRepo = `- name: incubator
url: https://charts.helm.sh/stable`;

kubeYamlEdit(argocd, `data.repositories`, helmRepo, `/ConfigMap//argocd-cm` );
kubeYamlEdit(argocd, "data.url", baseURLScheme + "://" + baseURL, `/ConfigMap//argocd-cm`);
if dexConfig {
kubeYamlEdit(argocd, `data.dex\.config`, dexConfig, `/ConfigMap//argocd-cm`);
}


kubeYamlEdit(argocd, `data.policy\.default`, `role:admin`, `/ConfigMap//argocd-rbac-cm`);
# patchLoad = '{"data":{"url":"' + baseURL + '", "dex.config:"' + dexConfig + '}}';
# pa = kubectl patch -n devtroncd cm/argocd-cm --type "application/merge-patch+json" -p patchLoad;

kubeYamlEdit(argocd, `subjects.0.namespace`, "devtroncd", `rbac.authorization.k8s.io/ClusterRoleBinding//argocd-application-controller`);
Expand All @@ -260,7 +133,6 @@ if hasArgocd {
kubeYamlDelete(argocd, filter=`/ConfigMap//argocd-tls-certs-cm`);
}
argocd = kubectl apply -n devtroncd argocd -u argocdOverride;
#patchLoad = '{"data":{"url":"' + baseURL + '", "dex.config:"' + dexConfig + '}}';
#pa = kubectl patch -n devtroncd cm/argocd-cm --type "application/merge-patch+json" -p patchLoad;
log("executed argocd setup command");

Expand All @@ -273,7 +145,6 @@ kubeYamlEdit(gitSensor, "data.PG_PASSWORD", postgresqlPassword, `/Secret//git-se

#notifier
kubeYamlEdit(notifier, "data.DB_PWD", postgresqlPassword, `/Secret//notifier-secret`);
kubeYamlEdit(notifier, "data.BASE_URL", baseURLScheme + "://" + baseURL, `/ConfigMap//notifier-cm`);

#image-scanner
kubeYamlEdit(imageScanner, "data.PG_PASSWORD", postgresqlPassword, `/Secret//image-scanner-secret`);
Expand Down Expand Up @@ -381,15 +252,12 @@ kubeYamlEdit(devtron, "data.DEX_SECRET", dexSecret, `/Secret//devtron-secret`);
kubeYamlEdit(devtron, "data.DEX_JWTKEY", dexJwtKey, `/Secret//devtron-secret`);
kubeYamlEdit(devtron, "data.DEX_CSTOREKEY", dexCStoreKey, `/Secret//devtron-secret`);
kubeYamlEdit(devtron, "data.ACD_PASSWORD", acdPassword, `/Secret//devtron-secret`);
kubeYamlEdit(devtron, "data.GRAFANA_PASSWORD", grafanaPassword, `/Secret//devtron-secret`);


kubeYamlEdit(devtron, "data.EXTERNAL_CI_WEB_HOOK_URL", baseURLScheme + "://" + baseURL+"/orchestrator/webhook/ext-ci", `/ConfigMap//devtron-cm`);
kubeYamlEdit(devtron, "data.DEFAULT_CD_LOGS_BUCKET_REGION", defaultCDLogsBucketRegion, `/ConfigMap//devtron-cm`);
kubeYamlEdit(devtron, "data.DEFAULT_CACHE_BUCKET", defaultCacheBucket, `/ConfigMap//devtron-cm`);
kubeYamlEdit(devtron, "data.DEFAULT_CACHE_BUCKET_REGION", defaultCacheBucketRegion, `/ConfigMap//devtron-cm`);
kubeYamlEdit(devtron, "data.DEFAULT_BUILD_LOGS_BUCKET", defaultBuildLogsBucket, `/ConfigMap//devtron-cm`);
kubeYamlEdit(devtron, "data.GRAFANA_URL", grafanaUrl, `/ConfigMap//devtron-cm`);

if !cloudProvider {
cloudProvider="AWS";
Expand Down