设置Istio证书颁发机构(CA)
留言簿应用程序的版本2使用了未启用Istio的外部服务(音频分析器)。因此,在本练习中,您将全局禁用mTLS并将其仅用于内部集群服务之间的通信。
kubectl get deployment -l istio=citadel -n istio-system
这是预期的输出:
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
kubectl get policies.authentication.istio.io
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身份验证服务吗?第一步,我得到了正确的预期输出,但第四步,我得到了相同的“未知字段”错误。
答案 0 :(得分: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。
希望有帮助。