小编Pra*_*esh的帖子

Liquibase:错误:CREATE DATABASE 无法在事务块内运行

我正在尝试使用 liquibase 在 PostgreSQL 上创建一个数据库。这是我的 dbchangelog 文件

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
  <changeSet  author="testuser"  id="3">
    <sql  dbms="postgresql"
            endDelimiter=";">
            CREATE DATABASE testdb;
    </sql>
  </changeSet>
</databaseChangeLog
Run Code Online (Sandbox Code Playgroud)

当我尝试从我的项目目录运行时,liquibase update我得到

Unexpected error running Liquibase: ERROR: CREATE DATABASE cannot run inside a transaction block [Failed SQL: (0) CREATE DATABASE testdb] 
Run Code Online (Sandbox Code Playgroud)

我看到在 PostgreSQL 中设置 AUTOCOMMIT = ON 可以解决这个问题。但此方法仅适用于 PostgreSQL 9.4 及以下版本。但我正在使用 AWS RDS PostgreSQL 9.6.8

postgresql liquibase liquibase-sql

7
推荐指数
2
解决办法
2665
查看次数

如何使用 NetworkPolicy 隔离命名空间中的 pod,而不禁用 Kubernetes pod 的外部流量

我正在尝试将命名空间中的 pod 与其他命名空间隔离。我尝试创建一个 NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-from-other-namespaces
spec:
  podSelector:
    matchLabels:
  ingress:
  - from:
    - podSelector: {}
Run Code Online (Sandbox Code Playgroud)

此 NetworkPolicy 成功将我的命名空间中的 Pod 与另一个命名空间隔离。但此策略一旦应用,就会禁用到这些 Pod 的所有外部流量。是否有任何方法可以仅阻止来自其他命名空间的流量并允许所有外部流量到达 Pod。

kubernetes kubernetes-networkpolicy kubernetes-ingress kubernetes-networking

6
推荐指数
1
解决办法
1095
查看次数

如何强制 cpanm 使用 HTTPS 而不是使用 HTTP 来安装依赖项

您好,我正在尝试使用 cpanm 安装 perl 模块。但是我的防火墙不允许 cpanm 使用 http。即使我使用 --mirror 选项强制它使用 https,它仍然使用 http 来安装依赖项。我如何强制 cpanm 仅使用https://mirror-address

Perl Version 5.16.3
Cpanm Version 1.6922
Run Code Online (Sandbox Code Playgroud)

perl cpanm

3
推荐指数
1
解决办法
1278
查看次数

ansible - 显示警告“条件语句不应包含 jinja2 模板分隔符”

- name: creating  task 
  shell: my_commnad
  when: ns.stdout.find('{{lookup('env',env')}}') == -1
Run Code Online (Sandbox Code Playgroud)

警告

[WARNING]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}. Found:
ns.stdout.find("{{lookup('env','NAMESPACE')}}") == -1
Run Code Online (Sandbox Code Playgroud)

我的剧本显示警告“条件语句不应包含 jinja2 模板分隔符”。任务是在特定环境不存在时运行 shell 命令。我应该如何避免这个警告并保持任务正常进行?

ansible ansible-2.x

3
推荐指数
1
解决办法
3105
查看次数

如何使用 kubectl 补丁将 Serviceaccout 添加到现有 Clusterrolebinding

这是我现有的集群角色绑定

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: example-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: test-role
subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns1
Run Code Online (Sandbox Code Playgroud)

我打算在另一个命名空间(例如:ns2)中添加相同的 ServiceAccount (test-sa) 并将其与我的 ClusterRole "test-role" 绑定。

我试过的

subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns2
Run Code Online (Sandbox Code Playgroud)

我尝试应用上面的 yaml 文件,例如

kubectl patch  clusterrolebinding <clusterrolebinding-name> --type="strategic"  --patch "$(cat role.yaml)"
Run Code Online (Sandbox Code Playgroud)

结果

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: example-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: test-role
subjects:
- kind: ServiceAccount
  name: test-sa
  namespace: ns2
Run Code Online (Sandbox Code Playgroud)

它在新的命名空间中添加了带有 sa 的 ClusterRoleBinding 但我在命名空间 ns1 中的现有绑定被删除了..编辑这个 …

kubernetes kustomize

1
推荐指数
1
解决办法
497
查看次数