У меня есть:
- EKS, развернутый с помощью сценария aws -cdk, с включенным kubectl, и приложений, развернутых с помощью
eks.Cluster.addResource()
- AWS Secrets Manager с набором секретов, которые я хочу быть доступными для приложения EKS
Я пытался развернуть Secret следующим образом:
import * as sm from "@aws-cdk/aws-secretsmanager";
getSecret(secretKey: string): string {
let secretTokens = sm.Secret.fromSecretArn(scope, "ImportedSecrets", awsSecretStorageArn);
return secretTokens.secretValueFromJson(secretKey).toString();
}
createKubernetesImagePullSecrets(k8s: eks.Cluster): void {
let eksSecretStorageName = this.env.awsResourcesConfig.k8sImagePullSecretStorageName;
k8s.addResource(eksSecretStorageName, {
apiVersion: "v1",
kind: "Secret",
metadata: {
name: eksSecretStorageName,
},
data: {
".dockerconfigjson": this.getSecret('hub-secret'),
},
type: "kubernetes.io/dockerconfigjson",
});
}
Я получаю сообщение об ошибке от CloudFormation:
Секрет в версии "v1" не может быть обработан как Секрет: v1.Secret.ObjectMeta: v1.ObjectMeta.TypeMeta: Kind: Данные: декодировать base64: недопустимые данные base64 на входном байте 0
Это происходит из-за того, что секретный токен не раскрывается, и значение поля ".dockerconfig json" в этом случае выглядит как ${Token[TOKEN.417]}
Есть ли способ развернуть секретный ресурс EKS и развернуть правильные секретные токены при развертывании?