in lib/addons/argocd/index.ts [201:253]
protected async createSecretKey(clusterInfo: spi.ClusterInfo, dependency: KubernetesManifest): Promise<string> {
const secretName = this.options.bootstrapRepo?.credentialsSecretName;
if (!secretName) {
return "";
}
const appRepo = this.options.bootstrapRepo!;
let credentials = { url: btoa(appRepo.repoUrl) };
const secretValue = await getSecretValue(secretName, clusterInfo.cluster.stack.region);
let result = "";
switch (appRepo?.credentialsType) {
case "SSH":
credentials = { ...credentials, ...{ sshPrivateKey: btoa(secretValue) } };
result = sshRepoRef(appRepo.repoUrl, secretName);
break;
case "USERNAME":
case "TOKEN":
// eslint-disable-next-line no-case-declarations
const secretJson: any = JSON.parse(secretValue);
credentials = {
...credentials, ...{
username: btoa(secretJson["username"]),
password: btoa(secretJson["password"])
}
};
result = userNameRepoRef(appRepo.repoUrl, secretName);
break;
}
const manifest = new KubernetesManifest(clusterInfo.cluster.stack, "argo-bootstrap-secret", {
cluster: clusterInfo.cluster,
manifest: [{
apiVersion: "v1",
kind: "Secret",
metadata: {
name: secretName,
namespace: this.options.namespace,
labels: {
"argocd.argoproj.io/secret-type": "repo-creds"
}
},
data: credentials,
}],
overwrite: true,
});
manifest.node.addDependency(dependency);
return result;
}