【问题标题】:Properly defining mTLS authentication policy within Istio在 Istio 中正确定义 mTLS 身份验证策略
【发布时间】:2020-06-02 23:44:26
【问题描述】:

我正在尝试运行 Istio 在线课程中的以下命令集:

设置 Istio 证书颁发机构 (CA)

留言本应用程序的第 2 版使用未启用 Istio 的外部服务(音调分析器)。因此,您将在本实验中全局禁用 mTLS,并仅为内部集群服务之间的通信启用它。

  1. 确保 Citadel 正在运行。 Citadel 是 Istio 的集群内证书颁发机构 (CA),是在集群中生成和管理加密身份所必需的。
kubectl get deployment -l istio=citadel -n istio-system

这是预期的输出:

  1. 为 Tone Analyzer 服务定义 mTLS 身份验证策略:
cat <<EOF | istioctl create -f -
apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: mtls-to-analyzer
  namespace: default
spec:
  targets:
  - name: analyzer
  peers:
  - mtls:
EOF

Created config policy/default/mtls-to-analyzer at revision 3934195 
  1. 确认已创建策略:
kubectl get policies.authentication.istio.io

  1. 使用目标规则从留言簿启用 mTLS:
cat <<EOF | istioctl create -f -
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: route-with-mtls-for-analyzer
  namespace: default
spec:
  host: "analyzer.default.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
EOF

Created config destination-rule/default/route-with-mtls-for-analyzer at revision 3934279

但是,当我尝试运行第二个命令时遇到以下错误:

Error: unknown command "create" for "istioctl"

当我使用“安装”而不是创建时:

cat <<EOF | istioctl install -f -
apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: mtls-to-analyzer
  namespace: default
spec:
  targets:
  - name: Tone Analyzer-qy
  peers:
  - mtls:
EOF

我收到以下错误:

Error: failed to apply manifests: unknown field "peers" in v1alpha1.IstioOperatorSpec:

谁能提供一些关于如何修改 YAML 以便正确定义 mTLS 身份验证服务的意见?我在第一步得到了正确的预期输出,但在第四步得到了相同的“未知字段”错误。

【问题讨论】:

  • 您好,您使用的是什么 istio/istioctl 版本?

标签: ubuntu service yaml kubectl istio


【解决方案1】:

istioctl主要用于安装和调试istio。

要创建 istio 对象应该使用kubectl

我认为您想使用的是kubectl 而不是istioctl,如下例所示:

cat <<EOF | kubectl create -f -
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: route-with-mtls-for-analyzer
  namespace: default
spec:
  host: "analyzer.default.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
EOF

根据 kubernetes 集群的版本,kubectl create 可以折旧,应使用kubectl apply 代替。所以命令看起来像这样。

cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: route-with-mtls-for-analyzer
  namespace: default
spec:
  host: "analyzer.default.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
EOF

欲了解更多信息,请查看 kubernetes documentation

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 2021-08-27
    • 2020-07-03
    • 2019-06-12
    • 2021-03-23
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多