这只是为了对我的Docker镜像和Kubernetes设置进行本地测试。我遇到的问题是访问Google的Container Registry。
我创建了服务帐户,希望具有正确的权限,但我还没有到那里。我已经得到了包含私钥和其他详细信息的JSON文件。我的问题是,当我尝试通过运行以下命令来创建秘密时:
kubectl create secret docker-registry gcr-json-key --docker-server=eu.gcr.io --docker-username=_json_key --docker-password="$(cat json_credentials.json)" --docker-email=pupeno@example.com我得到了这个错误:
error: exactly one NAME is required, got 5
See 'kubectl create secret docker-registry -h' for help and examples.我的猜测是,在--docker-password="之后,我最终得到了换行符、引号等,这就是导致问题的原因。或者是其他原因?我该怎么做呢?这在Bash中有效,但在PowerShell中无效吗?
发布于 2020-06-03 23:53:24
我能够通过转义双引号并从JSON密钥文件中删除新行来解决这个问题。(Powershell)
$JSON_CREDS = "C:\Path\To\Creds.json"
$REPOSITORY_HOST = "https://gcr.io"
$EMAIL = "email@example.com"
# An arbitrary string to serve as the name of the secret
$SECRET_NAME = "gcr-pull-secret"
$KUB_NAMESPACE = "some-namespace"
$service_json = (Get-Content $JSON_CREDS).replace("\n", "").replace('"', '\"')
$kubePath = "C:\Path\To\kubectl.exe"
$namespaceArg = "--namespace=$KUB_NAMESPACE"
$createArg = "create secret docker-registry $SECRET_NAME"
$serverArg = "--docker-server=$REPOSITORY_HOST"
$usernameArg = "--docker-username=_json_key"
$passwordArg = "--docker-password=""$service_json"""
$emailArg = "--docker-email=$EMAIL"
Start-Process $kubePath -ArgumentList "$namespaceArg $createArg $serverArg $usernameArg $passwordArg $emailArg" -Wait -NoNewWindow
# Optional, used to patch the default service account
$imagePullSecretJson = """{\""imagePullSecrets\"": [{\""name\"": \""$SECRET_NAME\""}]}"""
Start-Process $kubePath -ArgumentList "patch serviceaccount default -p $imagePullSecretJson" -Wait -NoNewWindowhttps://stackoverflow.com/questions/53187226
复制相似问题