【发布时间】:2020-07-23 22:19:20
【问题描述】:
我有:
- 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:种类:数据:解码base64:输入字节0处的非法base64数据
发生这种情况是因为秘密令牌没有展开并且“.dockerconfigjson”字段值在这种情况下看起来像${Token[TOKEN.417]}
有没有办法在部署过程中部署 EKS Secret 资源并正确扩展秘密令牌?
【问题讨论】:
标签: aws-cdk amazon-eks aws-secrets-manager kubernetes-secrets