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

本文介紹如何快速將應(yīng)用部署到Ambient Mesh模式。

前提條件

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

  • 已按照實(shí)際操作系統(tǒng)及平臺,下載Istioctl服務(wù)網(wǎng)格調(diào)試工具,且istioctl版本與ASM版本一致。詳細(xì)信息,請參見Istio。

重要

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

步驟一:啟用授權(quán)策略

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

說明

ASM 1.22版本的L4授權(quán)策略正在灰度中,1.21及以下版本可以正常使用。如需使用1.22版本的L4授權(quán)策略,請提交工單。

L4授權(quán)策略

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

    YAML文件用于定義授權(quán)策略,顯式允許sleep應(yīng)用和網(wǎng)關(guān)服務(wù)賬戶調(diào)用該productpage服務(wù)。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
     name: productpage-viewer
     namespace: default
    spec:
     selector:
       matchLabels:
         app: productpage
     action: ALLOW
     rules:
     - from:
       - source:
           principals:
           - cluster.local/ns/default/sa/sleep
           - cluster.local/ns/istio-system/sa/istio-ingressgateway
  2. 在ASM實(shí)例對應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,部署授權(quán)策略。

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

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

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

      預(yù)期輸出:

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

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

      預(yù)期輸出:

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

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

      預(yù)期輸出:

      command terminated with exit code 56

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

L7授權(quán)策略

ASM 1.21及以下版本

使用Kubernetes Gateway API,可以為bookinfo-productpage服務(wù)賬戶部署Waypoint代理,該代理用于productpage服務(wù)。任何流向productpage服務(wù)的流量都將由該7層代理路由。

  1. 執(zhí)行以下命令,為bookinfo-productpage服務(wù)賬戶部署Waypoint代理。

    istioctl x waypoint apply --service-account bookinfo-productpage
  2. 執(zhí)行以下命令,查看productpage的Waypoint代理狀態(tài)。

    kubectl get gtw bookinfo-productpage -o yaml

    展開查看預(yù)期輸出

    apiVersion: gateway.networking.k8s.io/v1beta1
    kind: Gateway
    metadata:
      annotations:
        gateway.istio.io/controller-version: "5"
        istio.io/for-service-account: bookinfo-productpage
      creationTimestamp: "2023-08-10T08:35:51Z"
      generation: 1
      name: bookinfo-productpage
      namespace: default
      resourceVersion: "7828921"
      uid: c085b788-a8fa-4a2c-8376-18d08689****
    spec:
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
    status:
      conditions:
      - lastTransitionTime: "2023-08-10T08:35:51Z"
        message: Handled by Istio controller
        observedGeneration: 1
        reason: Accepted
        status: "True"
        type: Accepted
  3. 修改AuthorizationPolicy。

    1. 將productpage-viewer.yaml文件修改為如下內(nèi)容,明確允許sleep和網(wǎng)關(guān)服務(wù)賬戶通過GET方式訪問productpage服務(wù),但不允許執(zhí)行其他操作。

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
       name: productpage-viewer
       namespace: default
      spec:
       selector:
         matchLabels:
           istio.io/gateway-name: bookinfo-productpage
       action: ALLOW
       rules:
       - from:
         - source:
             principals:
             - cluster.local/ns/default/sa/sleep
             - cluster.local/ns/istio-system/sa/istio-ingressgateway
         to:
         - operation:
             methods: ["GET"]
    2. 執(zhí)行以下命令,重新部署AuthorizationPolicy。

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

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

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

      預(yù)期輸出:

       RBAC: access denied                                                                                                       
    2. 執(zhí)行以下命令:

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

      預(yù)期輸出:

        RBAC: access denied
    3. 執(zhí)行以下命令:

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

      預(yù)期輸出:

       <title>Simple Bookstore App</title>

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

ASM 1.22及以上版本

要在Ambient模式下使用L7能力,首先需要為指定服務(wù)或工作負(fù)載啟用Waypoint代理。

如何為指定服務(wù)或工作負(fù)載啟用Waypoint代理?

為了支持更加靈活的在不同范圍內(nèi)啟用Waypoint,1.22使用了新的配置Waypoint的方法。配置主要分為兩部分:

  1. 首先您需要創(chuàng)建一個Waypoint代理,在Waypoint上通過label指定要生效的流量。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      labels:
        istio.io/waypoint-for: service
      name: waypoint
      namespace: default
    spec:
      gatewayClassName: istio-waypoint
      listeners:
      - name: mesh
        port: 15008
        protocol: HBONE
    1. 這個Gateway資源的gatewayClassName字段為istio-waypoint,聲明創(chuàng)建的是Waypoint。

    2. 它帶有一個特殊的labelistio.io/waypoint-for: service,表明這個Waypoint專為Service的流量服務(wù)。除了service之外,還支持配置:workload(專用于Pod)以及all(Service和Workload)。

  2. 指定哪些流量要被Waypoint代理。需要在Service、Namespace或者Pod上加上istio.io/use-waypoint這個label,label的值是要使用的Waypoint代理名稱。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: httpbin
        service: httpbin
        istio.io/use-waypoint: waypoint
      name: httpbin
      namespace: default
    spec:
      ports:
      - name: http
        port: 8000
        protocol: TCP
        targetPort: 80
      selector:
        app: httpbin
      type: ClusterIP

演示

接下來,繼續(xù)在本文的環(huán)境下演示如何使用L7授權(quán)策略。

  1. 使用ACK kubeconfig,將以下Waypoint代理的內(nèi)容部署到default命名空間。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      labels:
        istio.io/waypoint-for: service
      name: waypoint
      namespace: default
    spec:
      gatewayClassName: istio-waypoint
      listeners:
      - name: mesh
        port: 15008
        protocol: HBONE
  2. 使用ACK集群kubeconfig執(zhí)行以下命令,為productpage對應(yīng)的Service添加label,讓對應(yīng)流量被waypoint代理。

    kubectl label service productpage istio.io/use-waypoint=waypoint
  3. 使用以下內(nèi)容更新AuthorizationPolicy。

    apiVersion: security.istio.io/v1beta1
    kind: AuthorizationPolicy
    metadata:
      name: productpage-viewer
      namespace: default
    spec:
      targetRefs:
      - kind: Service
        group: ""
        name: productpage
      action: ALLOW
      rules:
      - from:
        - source:
            principals:
            - cluster.local/ns/default/sa/sleep
        to:
        - operation:
            methods: ["GET"]

    明確指出只允許slepp使用GET訪問productpage服務(wù),其余請求都將被拒絕。

    說明

    如果直接apply上述授權(quán)策略失敗,請刪除原有授權(quán)策略后重新apply。

  4. 驗(yàn)證授權(quán)策略是否生效

    1. 使用ACK kubeconfig,執(zhí)行以下命令使用GET方法訪問productpage服務(wù)。

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

      預(yù)期輸出:

      <title>Simple Bookstore App</title>
    2. 執(zhí)行以下命令,使用DELETE方法訪問productpage服務(wù)。

      kubectl exec deploy/sleep -- curl -XDELETE -s http://productpage:9080/

      預(yù)期輸出:

      RBAC: access denied
    3. 執(zhí)行以下命令,使用GET方法訪問productpage服務(wù)。

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

      預(yù)期輸出:

      RBAC: access denied

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

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

ASM 1.21及以下版本

  1. 執(zhí)行以下命令,為reviews服務(wù)部署Waypoint代理,以便任何流向reviews服務(wù)的流量都將由Waypoint代理進(jìn)行路由。

    istioctl x waypoint apply --service-account bookinfo-reviews
  2. 使用以下內(nèi)容,創(chuàng)建reviews.yaml。

    配置流量路由以將90%的請求發(fā)送到reviews-v1,將10%的請求發(fā)送到reviews-v2。

    展開查看reviews.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
          weight: 90
        - destination:
            host: reviews
            subset: v2
          weight: 10
    
  3. 執(zhí)行以下命令,部署DestinationRule。

    kubectl apply -f reviews.yaml
  4. 執(zhí)行以下命令, 驗(yàn)證100個請求中是否約10%的流量流向reviews-v2。

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

    預(yù)期輸出:

            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v2-5d99885bc9-qb5cv</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>

    預(yù)期輸出表明L7路由規(guī)則生效。

ASM 1.22及以上版本

  1. 執(zhí)行以下命令,為reviews服務(wù)部署Waypoint代理,以便任何流向reviews服務(wù)的流量都將由Waypoint代理進(jìn)行路由。

    kubectl label service reviews istio.io/use-waypoint=waypoint
  2. 使用以下內(nèi)容,為review服務(wù)創(chuàng)建流量規(guī)則,加個90%的請求發(fā)送給review v1,10%的請求發(fā)送給review v2.

    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
          weight: 90
        - destination:
            host: reviews
            subset: v2
          weight: 10
  3. 執(zhí)行以下命令, 驗(yàn)證100個請求中是否約10%的流量流向reviews-v2。

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

    預(yù)期輸出:

            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v2-5d99885bc9-qb5cv</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>
            <u>reviews-v1-5896f547f5-48zcn</u>

    預(yù)期輸出表明L7路由規(guī)則生效。

步驟三:清理資源

執(zhí)行以下命令,清理本文創(chuàng)建的資源對象。

istioctl x waypoint delete  --service-account bookinfo-productpage
istioctl x waypoint delete --service-account bookinfo-reviews
kubectl delete authorizationpolicy productpage-viewer