我有一个 dynamodb 表,其中有一个 GlobalSecondaryIndex ,其中日期字段作为键类型“range”的属性。值以 ISO 格式“YYYY-MM-DD”存储。我想在节点中仅访问日期大于特定日期的记录。它似乎适用于我的查询的参数:
KeyConditionExpression: 'myDate >= :myDate',
ExpressionAttributeValues: {
':myDate': '2017-11-17'
}
Run Code Online (Sandbox Code Playgroud)
不过我不太明白。从技术上讲,日期是一个字符串。信任字符串比较是否可靠,还是应该以不同的方式完成?
我在 Google Cloud 中创建了一个托管 Postgres 数据库。该数据库获得了外部 IP 地址。第二步,我创建了一个 Kubernetes 集群。在 k8s 中,我想访问这个外部数据库。因此,我创建了一个没有标签选择器的服务,但有一个指向我的 Postgres 数据库的外部端点。
我必须允许 Postgres 数据库从(三个)集群节点访问。我在 Google Cloud Console (SQL) 中进行了配置。
我的第一个问题:这是集成外部数据库的正确方法吗?特别是这个IP访问配置?
为了测试我对数据库的连接,我的第一次尝试是从本地主机建立端口转发。我的想法是通过我的 Database-IDE(datagrip)访问这个数据库。但是,当尝试建立端口转发时,出现以下错误:
error: cannot attach to *v1.Service: invalid service 'postgres-bla-bla': Service is defined without a selector
Run Code Online (Sandbox Code Playgroud)
第二个问题:如何在本地访问该服务?
在第三步中,我使用 'partlab/ubuntu-postgresql' docker-image 创建了一个 pod。我做了一个 'kctrl exec -it ... ' 并且可以访问我的 Postgres 数据库
psql -h postgres-bla-bla ...
Run Code Online (Sandbox Code Playgroud)
所以基本上它有效。但我确信我的解决方案有一些缺陷。我可以做什么更好?如何解决问题 2 中的问题?
我使用 traefik 1.7.14,我想为我的 grafana-docker-compose 服务使用基本身份验证。我关注了例如https://medium.com/@xavier.priour/secure-traefik-dashboard-with-https-and-password-in-docker-5b657e2aa15f
但我也查看了其他来源。在我docker-compose.yml的 Grafana 中:
grafana:
image: grafana/grafana
labels:
- "traefik.enable=true"
- "traefik.backend=grafana"
- "traefik.port=3000"
- "traefik.frontend.rule=Host:grafana.my-domain.io"
- "traefik.frontend.entryPoints=http,https"
- "traefik.frontend.auth.basic.users=${ADMIN_CREDS}
Run Code Online (Sandbox Code Playgroud)
ADMIN_CREDS 在我的.env文件中。我创建的内容与htpasswd -nbm my_user my_password 我也试过htpasswd -nbB my_user my_password 不md5但是bcrypt加密。在.env
ADMIN_CREDS=test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0
Run Code Online (Sandbox Code Playgroud)
你看:我没有在.env文件中转义 $ 符号。当我在运行时检查我的容器时,我看到与我的.env文件中完全相同的加密密码!
docker inspect 47aa3dbc3623 | grep test
给我:
"traefik.frontend.auth.basic.users": "test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0",
Run Code Online (Sandbox Code Playgroud)
我还尝试将用户/密码字符串直接放入 docker-compose.yml。这次通过转义 $ 符号。检查命令也成功了。但是:当我调用我的 grafana-URL 时,我得到一个基本的身份验证对话框,当我输入我的用户/密码组合时,我总是得到一个
{"message":"Invalid username or password"}
Run Code Online (Sandbox Code Playgroud)
这里还有什么问题?我目前不知道。
我有一个网络应用程序,到目前为止一直通过云运行运行,但没有访问限制。现在它应该只对某些用户可用。我阅读了https://cloud.google.com/run/docs/authentication/end-users并尝试了两种提到的方法:Google-Sign-In 和“Identity Platform”教程。
如果我理解正确的话,您必须在这两种变体中对实际用户进行编程。例如,确定哪些电子邮件地址可以访问应用程序等。我一直在寻找一种声明性方式,理想情况下,我只维护允许的电子邮件地址列表,并且“云运行应用程序”仅“神奇地”链接到此。结果,只有这些用户才能访问 Web 应用程序。这似乎不可能?
理想情况下,实际应用程序根本不应该改变,上游层将负责身份验证和授权,可能与“身份平台”结合使用。
诚挚的问候,欢迎任何提示托马斯