日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

本文介紹如何快速地在ACMG模式下部署應(yīng)用。

前提條件

已部署示例代碼。具體操作,請(qǐng)參見(jiàn)準(zhǔn)備工作

重要

在本操作文檔中,您可能需要反復(fù)切換 Kubernetes 上下文(context)以操作數(shù)據(jù)面集群和控制面集群。為了避免誤操作,請(qǐng)您在每次上下文切換時(shí),務(wù)必確認(rèn)當(dāng)前上下文是否正確。您可以使用kubectx簡(jiǎn)化上下文切換的操作,具體步驟,請(qǐng)參見(jiàn)kubectx。您也可以通過(guò)開(kāi)啟通過(guò)數(shù)據(jù)面集群KubeAPI訪問(wèn)Istio資源,使用數(shù)據(jù)面集群KubeAPI直接操作控制面集群。

按Namespace開(kāi)啟/關(guān)閉ACMG模式

  1. 通過(guò)ASM實(shí)例的kubeconfig操作控制面集群,開(kāi)啟ACMG模式。

    kubectl label namespace default istio.io/dataplane-mode=acmg
  2. 關(guān)閉ACMG模式。

    kubectl label namespace default istio.io/dataplane-mode-

步驟一:?jiǎn)⒂檬跈?quán)策略

將應(yīng)用程序添加到ACMG模式后,您可以使用L4和L7授權(quán)策略來(lái)保護(hù)應(yīng)用程序訪問(wèn)。例如,可以根據(jù)客戶端工作負(fù)載身份控制對(duì)服務(wù)的訪問(wèn)。

L4授權(quán)策略

  1. 使用以下內(nèi)容,創(chuàng)建productpage-viewer.yaml。

    kind: AuthorizationPolicy
    metadata:
     name: productpage-viewer
     namespace: default
    spec:
      targetRef:
        kind: Service
        group: ""
        name: productpage
      action: ALLOW
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/default/sa/sleep
  2. 使用ASM實(shí)例的KubeConfig,執(zhí)行以下命令,部署授權(quán)策略,顯式允許sleep應(yīng)用服務(wù)賬戶調(diào)用該productpage服務(wù)。

    kubectl apply -f productpage-viewer.yaml
  3. 驗(yàn)證授權(quán)策略是否生效。

    1. 執(zhí)行以下命令:

      kubectl exec deploy/sleep -- curl -s "http://productpage:9080/productpage" | grep -o "<title>.*</title>"

      預(yù)期輸出:

      <title>Simple Bookstore App</title>
    2. 執(zhí)行以下命令:

      kubectl exec deploy/notsleep -- curl -s http://productpage:9080/ | grep -o "<title>.*</title>"

      預(yù)期輸出:

      RBAC: access denied

      以上結(jié)果說(shuō)明授權(quán)策略生效。

L7授權(quán)策略

  1. 使用以下內(nèi)容創(chuàng)建productpage-viewer.yaml,允許sleep應(yīng)用的服務(wù)賬戶通過(guò)GET方法訪問(wèn)productpage服務(wù),但不允許執(zhí)行其他操作。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
     name: productpage-viewer
     namespace: default
    spec:
      targetRef:
        kind: Service
        group: ""
        name: productpage
      action: ALLOW
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/default/sa/sleep
        to:
        - operation:
            methods: ["GET"]
  2. 使用ASM的kubeconfig,執(zhí)行以下命令,部署授權(quán)策略。

    kubectl apply -f productpage-viewer.yaml
  3. 驗(yàn)證授權(quán)策略是否生效。

    1. 執(zhí)行以下命令,從sleep應(yīng)用Pod使用GET方法訪問(wèn)productpage服務(wù)。

      kubectl exec deploy/sleep -- curl -s "http://productpage:9080/productpage" | grep -o "<title>.*</title>"

      預(yù)期輸出:

      <title>Simple Bookstore App</title>
    2. 執(zhí)行以下命令,從sleep應(yīng)用Pod使用DELETE方法訪問(wèn)produpage服務(wù)。

      kubectl exec deploy/sleep -- curl -s "http://productpage:9080/productpage" -X DELETE

      預(yù)期輸出:

      RBAC: access denied
    3. 執(zhí)行以下命令,從notsleep應(yīng)用Pod使用GET方法訪問(wèn)produpage服務(wù)。

      kubectl exec deploy/notsleep -- curl -s "http://productpage:9080/productpage"

      預(yù)期輸出:

      RBAC: access denied

      可以看到,從sleep應(yīng)用使用GET方法可以正常訪問(wèn)productpage服務(wù),使用DELETE方法和從notsleep應(yīng)用訪問(wèn)被拒絕,策略已經(jīng)生效。

步驟二:定義L7路由規(guī)則

使用VirtualService和DestinationRule

  1. 使用以下內(nèi)容,創(chuàng)建review-all-v1.yaml。

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: reviews
    spec:
      host: reviews
      trafficPolicy:
        loadBalancer:
          simple: RANDOM
      subsets:
      - name: v1
        labels:
          version: v1
      - name: v2
        labels:
          version: v2
      - name: v3
        labels:
          version: v3
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - route:
        - destination:
            host: reviews
            subset: v1
  2. 執(zhí)行以下命令,部署VirtualService和DestinationRule,配置流量路由以100%的請(qǐng)求發(fā)送到review-v1。

    kubectl apply -f reviews-all-v1.yaml
  3. 執(zhí)行以下命令,驗(yàn)證100%的請(qǐng)求中是否流向reviews-v1。

    kubectl exec deploy/sleep -- sh -c "for i in \$(seq 1 100); do curl -s http://productpage:9080/productpage | grep reviews-v.-; done"

    預(yù)期輸出:

            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>

    可以看到,所有的請(qǐng)求都流向了review-v1服務(wù),VirtualService和DestinationRule已生效。

使用GatewayAPI

說(shuō)明

請(qǐng)確認(rèn)ACK集群中已存在GatewayAPI相關(guān)的CRD,并且已開(kāi)啟ASM實(shí)例的GatewayAPI支持開(kāi)關(guān)。具體操作,請(qǐng)參見(jiàn)確認(rèn)ACK集群已存在GatewayAPI相關(guān)CRD開(kāi)啟ASM實(shí)例的GatewayAPI支持開(kāi)關(guān)

  1. 使用以下內(nèi)容,創(chuàng)建 reviews-route-all-v1.yaml。

    apiVersion: v1
    kind: Service
    metadata:
      name: reviews-v1
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
        version: v1
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews-v2
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
        version: v2
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews-v3
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
        version: v3
    ---
    apiVersion: gateway.networking.k8s.io/v1beta1
    kind: HTTPRoute
    metadata:
      name: reviews
    spec:
      parentRefs:
      - group: ""
        kind: Service
        name: reviews
        port: 9080
      rules:
      - backendRefs:
        - name: reviews-v1
          port: 9080
  2. 執(zhí)行以下命令,部署使用GatewayAPI定義的HTTPRoute規(guī)則,限制所有訪問(wèn)reviews的流量都將被路由到reviews-v1。

    kubectl apply -f reviews-route-all-v1.yaml
  3. 執(zhí)行以下命令,驗(yàn)證HTTPRoute規(guī)則是否生效。

    kubectl exec deploy/sleep -- sh -c "for i in \$(seq 1 100); do curl -s http://productpage:9080/productpage | grep reviews-v.-; done"

    預(yù)期輸出:

            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>
            <u>reviews-v1-ff5787f99-t64h2</u>

    可以看到,所有訪問(wèn)reviews的流量都將被路由到了reviews-v1,使用GatewayAPI定義的HTTPRoute規(guī)則已經(jīng)生效。