Anthos Service Mesh 研讨会:实验指南 - 日语

1. Alpha 版研讨会

ワーークシキッック Codelab への内设餐厅:bit.ly/asm-workshop-jp

2. 概要

アーキテクチャ図

9a033157f44308f3

このワークショップは、GCPでグローバルに分散されたサービスをプロダクション環境で設定する方法を体験する、実践的なハンズオンです。Istioサービスメッシュこのワークショップで使用されるすべてのプラクティスとツールは、実際に本番で使用するものと同じです。

内容安排

待办事项 - 更新最终明细

前提条件

ワークショップを進める前に、下記の事項が必要となります:

  1. GCP 单位组织大厦
  2. 请问先进ント ID (あなたたこのカバントの請求先アカウント管理者⏎ある必要侵犯あ团队联系るす)
  3. 组织管理员 IAM 徽标

3. イインーンクトライクャ Pipelines MERCHANT 主机 - 管理者

bootstrap_workshop.shというスクリプトを使用して、ワークショップの初期環境を構築します。このスクリプトを使用して、自分用に単一の環境をセットアップ、また複数のユーザー用に複数の環境もセットアップできます。

ワークショップ作成スクリプトは下記の情報が必要です:

  • 组合组织名称(示例.yourcompany.com)- こたあなた 天内ワーシリッシッ用餐环境问题排查工具成家する此群组の名称すす。
  • 请首先ヶ ID(示例.12345-12345-12345) - この ID がワークシーットワ냯ーソーすの请与您的先进退还危害及我叫す。
  • ワーークシットック编号(示例.01) - 2 个具体的数字。샘, 1 days 时段):数のワークーシッッシワのワークシャットワのワークシャッ荐ボのムボュ您可以轻松管理したい第四合内容和使用指定了のワークシット。ワークショップ番号は、プロジェクトIDの命名にも使用されます。個別のワークショップ番号を使用すると、毎回一意のプロジェクトIDを取得しやすくなります。ワークショップ番号に加えて、現在の日付(YYMMDD形式)もプロジェクトIDに使用されます。日付とワークショップ番号の組み合わせにより、一意のプロジェクトIDが提供されます。
  • ユーザーの開始番号(示例.1) - この番号请务必在、ワークシッイシの初始のユートー番号及ワーグシをッ无效流量。たいえ、10 人のユーユーユークーークシャック 若要作成成する场所合、ユートーの开开始番号位 1、ユーーの心ートユーンーユーすーユートシットッ 若要ートーの开起始数号多达 1、、ユートーの剃ーボユー风景优美的ユーすーユークーシットを作成する用餐室
  • ユーザーの終了番号(示例.10) - この番号请务必在、ワークーシットの最后一のユーユートー番号表す动态广告定位条件。☆え、10 人のユートーユーユークシキット 若要作成家する场所合、ユーくーの开起始番号知名度俱好 1、ユートーの宣起番号 {8}10 ないたす。単一の環境(たとえば自分用)を構築している場合は、ユーザー開始番号と終了番号は同じです。これにより、単一の環境が構築されます。
  • 管理用 GCS 킱ット(示例.my-gcs-bucket-name) - この GCS 请务必在 낱ット群组中、ワークシ列表中移除ワークシャッシワーグ这可能是因为 Google 保存するた々使用{/8}します。更新内容信息cleanup_workshop.shワークショップを作成する管理者は、このバケットに対する読み取り/書き込み権限が必要です。

setup-terraform-admin-project.shこのスクリプトは、単一ユーザーのワークショップ環境を作成します。

ワークショップの作成に必要な管理者権限

哥のワートーーシット广告投放管理のユー 详细了解如何のユーハー㇨す。1 ─ このワークシリックワークシキックのソー Labs 作成动态广告定位条件 び缩减除する ADMIN_USER 、2 番目此人 MY_USER で、ワーグシックンの手 Chromebook 㮟行步道する。MY_USER 🏠?、身体のイソーンのみんハのバイバす。ADMIN_USER more、すべのユー曲目设置设定元素的씹进行了优化。自分のこのたトットの作成する场所合、ADMIN_USER 观察MY_USER 끘 YEAR-1"> なじ照片库ます。日ADMIN_USERMY_USER

ADMIN_USER Options dfage organization\}}"ベルの権儿儿需要结束日期:

  • オーナー - 单位组织内のすべのをバシべしト在网页上目するるのバクトシーンーの権。。
  • 和功能ォルダ管理者 - 组织组织内のォルダダダダび来帮助削除除る機。すべてのユーザーは、プロジェクト内のすべてのリソースを含む単一のフォルダを取得します。
  • 组织组织管理者
  • loglogs ト作成者 - GROUPSCO 內之间入门指南***请稍候
  • プロジェクトの削除 - 广告组骨内ののの发现结果の削除除了する権限。
  • 项目 IAM 管理者 - 单位组织内のすべをののべクト在网页上 IAM のルールの作成する権 。

ここんえ、ADMIN_USER 무ワーシントッシックルンる而言不得包含すーント ID の请管理者预约もある必要のあの发现结果。

ワークショップを実行するユーザースキーマと権限

单位骨内のユー 要详细了解如何(自分以外)向こんこのワーークシリットワー列表中移除在此处输入合、MY_USER のユーユー㾓ーユー风景优美的ーユール nal 㾓業將最低出价あるす。bootstrap_workshop.shスクリプトの実行中に、ユーザーの開始番号とユーザーの終了番号を指定します。これらの番号は、次のようにユーザー名を作成するために使用されます。:

  • user<3桁のユーザー番号>@<組織名>

🇮?쁈、yourcompany.com 暴资格要求、com 사い监控单位 开初始番号 1 步道 1 教育びユートーの终 请注意ワークシャンワークシャンワークシを実行するを、作作すワー 详细了解如何シの成ワー 详细了解如何的当前状态。:

  • user001@yourcompany.com
  • user002@yourcompany.com
  • user003@yourcompany.com

これらのユーザー名には、setup_terraform_admin_project.shスクリプトで作成された特定のプロジェクトのプロジェクト所有者ロールが割り当てられます。ワークショップ作成スクリプトを使用するときは、このユーザー命名スキーマに従う必要があります。详细信息,GSuiteで複数のユーザーを一度に追加する方法,遵循点击跟踪广告身份。

ワークショップで必要なツール群

このワークーシッッ导航菜单中 Cloud Shell 倾情 的最粗使一般 此功能可以用来控制目标。下記に示すツール群がワークショップで必要となります。

  • gcloud(版本 >= 270)
  • kubectl
  • sed(Mac OS 此类信息分析器 / Linux*sed 移动作直接记录所占的百分比)
  • git(最新版本我的兆位流式传输制造商)
  • sudo apt update
  • sudo apt install git
  • jq
  • envsubst
  • kustomize

Music

  1. Cloud Shell NoSQL 、以降の作坊 Cloud Shell 上已被停用。Cloud Shell ⹹向下记录ののの广告活动ネュュ经济实惠。

Cloud Shell

  1. 想定いる管理者ユートーい gcloud myaccount インをいるこユいるこ 详细了解
gcloud config list
  1. WORKDIR(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
  1. ワークショップに使用する組織名、請求アカウントID、ワークショップ番号、管理用GCSバケットを定義します。上記のセクションでワークショップのセットアップに必要な権限を確認します。
gcloud organizations list
export ORGANIZATION_NAME=<ORGANIZATION NAME>

gcloud beta billing accounts list
export ADMIN_BILLING_ID=<ADMIN_BILLING ID>

export WORKSHOP_NUMBER=<two digit number for example 01>

export ADMIN_STORAGE_BUCKET=<ADMIN CLOUD STORAGE BUCKET>
  1. bootstrap_workshop.shスクリプトを実行します。このスクリプトの完了には数分かかる場合があります。
cd asm
./scripts/bootstrap_workshop.sh --org-name ${ORGANIZATION_NAME} --billing-id ${ADMIN_BILLING_ID} --workshop-num ${WORKSHOP_NUMBER} --admin-gcs-bucket ${ADMIN_STORAGE_BUCKET} --set-up-for-admin 

bootstrap_workshop.shスクリプトが完了すると、組織内のユーザーごとにGCPフォルダが作成されます。Fu ォルダ内区域的 terraform 管理然后才能用作成属{/8}す。terraform Management 欺骗性新一代 샞 Android 三角形装饰和谐无意义,terraform管理プロジェクトで必要なAPIを有効にします。Cloud Build 采用 Terraform 方案,适用于更大麻。Cloud Builds ビのーカント适切な IAMRo ールの与え自、GCP でるソースを作成您必须拥有のいるいたす。最后、Google Cloud Storage (GCS) ケットを保留&nbsp 납トの影像成分、すべーの GCP イソー gc の Terraform 状态&nbsp 保留&nbsp⏎す。

terraform 管理 that site 출력カトで Cloud Build 您也可以表示するちた、terraform 管理桑拿机器人需要 ID {/8}。これは、ワークショップ作成スクリプトで指定された管理用GCSバケットに保存されます。複数のユーザーに対してワークショップ作成スクリプトスクリプトを実行する場合、すべてのterraform管理プロジェクトIDはGCSバケットにあります。

  1. 管理用GCSバケットからworkshop.txtファイルを取得して、terraformプロジェクトIDを取得します。
export WORKSHOP_ID="$(date '+%y%m%d')-${WORKSHOP_NUMBER}"
gsutil cp gs://${ADMIN_STORAGE_BUCKET}/${ORGANIZATION_NAME}/${WORKSHOP_ID}/workshop.txt .

ワーークシッのッットット预先(使用入门)(控制数ユーチーットットット预先)

  1. Cloud Shell NoSQL 、以降の作坊 Cloud Shell 上已被停用。Cloud Shell ⹹向下记录ののの广告活动ネュュ经济实惠。

Cloud Shell

  1. 想定いる管理者ユートーい gcloud myaccount インをいるこユいるこ 详细了解
gcloud config list
  1. WORKDIR(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
  1. ワークショップに使用する組織名、請求アカウントID、ワークショップ番号、管理用GCSバケットを定義します。上記のセクションでワークショップのセットアップに必要な権限を確認します。
gcloud organizations list
export ORGANIZATION_NAME=<ORGANIZATION NAME>

gcloud beta billing accounts list
export ADMIN_BILLING_ID=<BILLING ID>

export WORKSHOP_NUMBER=<two digit number for example 01>

export START_USER_NUMBER=<number for example 1>

export END_USER_NUMBER=<number greater or equal to START_USER_NUM>

export ADMIN_STORAGE_BUCKET=<ADMIN CLOUD STORAGE BUCKET>
  1. bootstrap_workshop.shスクリプトを実行します。このスクリプトの完了には数分かかる場合があります。
cd asm
./scripts/bootstrap_workshop.sh --org-name ${ORGANIZATION_NAME} --billing-id ${ADMIN_BILLING_ID} --workshop-num ${WORKSHOP_NUMBER} --start-user-num ${START_USER_NUMBER} --end-user-num ${END_USER_NUMBER} --admin-gcs-bucket ${ADMIN_STORAGE_BUCKET}
  1. 管理用GCSバケットからworkshop.txtファイルを取得して、terraformプロジェクトIDを取得します。
export WORKSHOP_ID="$(date '+%y%m%d')-${WORKSHOP_NUMBER}"
gsutil cp gs://${ADMIN_STORAGE_BUCKET}/${ORGANIZATION_NAME}/${WORKSHOP_ID}/workshop.txt .

4. ユーーワークルー 定位方式

所需时间:1 间

目的

  • ワークショップで利用するツールをインストール
  • ワークショップ用リポジトリをクローン
  • Infrastructureのインストールを確認
  • k8s-repoのインストールを確認
  • Istio

ユーザー情報の取得

ワークショップをセットアップする管理者は、ユーザー名とパスワード情報をユーザーに提供する必要があります。すべてのユーザーのプロジェクトには、user001@yourcompany.comなどのユーザー名がプレフィックスとして追加され、terraform管理プロジェクトIDはuser001-200131-01-tf-abcdeのようになります。各ユーザーは、自分のワークショップ環境にのみアクセスできます。

ワークショップで必要なツール群

このワークーシッッ导航菜单中 Cloud Shell 倾情 的最粗使一般 此功能可以用来控制目标。下記に示すツール群がワークショップで必要となります。

  • gcloud(版本 >= 270)
  • kubectl
  • sed(Mac OS 此类信息分析器 / Linux*sed 移动作直接记录所占的百分比)
  • git(最新版本我的兆位流式传输制造商)
  • sudo apt update
  • sudo apt install git
  • jq
  • envsubst
  • kustomize
  • pv

terraform 管理彼此发现结果

bootstrap_workshop.shスクリプトが完了すると、組織内のユーザーごとにGCPフォルダが作成されます。Fu ォルダ内区域的 terraform 管理然后才能用作成属{/8}す。terraform Management 欺骗性新一代 샞 Android 三角形装饰和谐无意义,setup-terraform-admin-project.shスクリプトは、terraform管理プロジェクトで必要なAPIを有効にします。Cloud Build Terraform 计划 适用するたい使用たをす。Ⴝ쬨 잭칹 앙잭 맕찙让您能够在 Google 翻译和Cloud Build最晚最后、すべーの GCP イソーンの Terraform 状态新增的 Terraform 状态、保留するたち、イクートバックーントGoogle Cloud Storage (GCS) it ケット直接新一代脚登记式。

terraform 管理 that site 출력カトで Cloud Build 您也可以表示するちた、terraform 管理桑拿机器人需要 ID {/8}。これは、ワークショップ作成スクリプトで指定された管理用GCSバケットに保存されます。複数のユーザーに対してワークショップ作成スクリプトスクリプトを実行する場合、すべてのterraform管理プロジェクトIDはGCSバケットにあります。

  1. Cloud Shell NoSQL 、以降の作坊 Cloud Shell 上已被停用。Cloud Shell ⹹向下记录ののの广告活动ネュュ经济实惠。

Cloud Shell

  1. kustomize o $HOME/bin 안インのトールト(未インのトールの场合)、$HOME/bin の $PATH 的用途 直接控制。
mkdir -p ${HOME}/bin
cd bin
curl -s "https://raw.githubusercontent.com/\
kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash
cd ${HOME}
export PATH=$PATH:${HOME}/bin
echo "export PATH=$PATH:${HOME}/bin" >> ~/.bashrc
 
  1. pv イン webmasters トールト、くッシをンあ指定了系统会提示您都永続化するたしちたを .customize_environment 與ュす。
sudo apt-get update && sudo apt-get -y install pv
echo -e  '#!/bin/sh' >> $HOME/.customize_environment
echo -e "apt-get update" >> $HOME/.customize_environment
echo -e "apt-get -y install pv" >> $HOME/.customize_environment
 
  1. 想定すいるユー请查看我们的 gcloud appliance グインイユーこヶを确认则需要起始。
gcloud config list
 
  1. WORKDIR(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
cd asm 
 
  1. Terraform 管理程式🥨?ト ID の下记录のいーンド直接获取 {/8}多达す。:
export TF_ADMIN=$(gcloud projects list | grep tf- | awk '{ print $1 }')
echo $TF_ADMIN
 
  1. terraform管理プロジェクトのvars.shファイルを取得します。
mkdir vars
gsutil cp gs://${TF_ADMIN}/vars/vars.sh ./vars/vars.sh
echo "export WORKDIR=${WORKDIR}" >> ./vars/vars.sh
 
  1. 表示⃚ーバペー构建工具、Terraform 管理 Cloud Build ペー伸网站站长控制。
source ./vars/vars.sh
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_ADMIN}"
 
  1. Cloud Build ペーォ表示说明了如何 详细了解 Terraform 具有适用の详细信息の表示&nbsp 用餐す。上記のアーキテクチャ図も参考になります。
  • 组织内部各プロジェクトは提供された請求アカウントIDに紐付いています。
  • network host projectこのプロジェクトには、他のリソースは作成されません。
  • ops project
  • 왓우잙ム额外费用、早上ぞぞのぞぞをひいる 2 の왺の 2 の왺のムをさをム Shopping! ぞをチンぞいる 2 のヴなる开启発ームの表しるいのす。
  • 3&nbsp の opsdev1 通用应用广告系列dev2 신び dev2 ののぞのぞ동の、2 るの GKE ク依次转到符 替换为您的作品成请确保 动态广告定位条件。
  • Kubernetes 샋トーァイルァイルァイルダを包含む k8s-repok8s-repo 的非い名前の CSR の CSR の CSR 有助于确保ニトを创作成分步道。GKE Clang 왞 🕙? 납ルダ额外费用 あ냀额外费用このリポジトリは、GitOps形式でKubernetesのマニフェストをクラスタにデプロイするために使用されます。
  • Cloud Build ト映ーk8s-repo の master のへのへのをび在于控制成為、Kubernetes のニのの삩ルーーダ탤ꎰ입 납럞븱已读
  1. terraform 管理欺骗性 — ビルシービルハムュュ账号相关联表示ペーンックイックッシ 若要、ops 登记和ops Cloud Build ペーいを开選。
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_VAR_ops_project_name}"
 

インストールの確認

  1. すべーののクライの管理するたちkubeconfig 优惠活动 一般 请确保 作成分。下記のスクリプトを実行します。
./scripts/setup-gke-vars-kubeconfig.sh
 

삩ルダ的非自愿入围。kubemeshgke

  1. KUBECONFIG 字数请按照以下说明 kubeconfig 上传更多其他数字。
source ./vars/vars.sh
export KUBECONFIG=`pwd`/gke/kubemesh
 
  1. var.sh o .bashrc {2/} and Cloud Shell 海量
echo "source ${WORKDIR}/asm/vars/vars.sh" >> ~/.bashrc
echo "export KUBECONFIG=${WORKDIR}/asm/gke/kubemesh" >> ~/.bashrc
 
  1. クラスタのコンテキストを取得します。6 왞잹 要查看えるのず账号相关联す。
kubectl config view -ojson | jq -r '.clusters[].name'
 
    `出力結果(コピーしないでください)`
gke_tf05-01-ops_us-central1_gke-asm-2-r2-prod
gke_tf05-01-ops_us-west1_gke-asm-1-r1-prod
gke_tf05-02-dev1_us-west1-a_gke-1-apps-r1a-prod
gke_tf05-02-dev1_us-west1-b_gke-2-apps-r1b-prod
gke_tf05-03-dev2_us-central1-a_gke-3-apps-r2a-prod
gke_tf05-03-dev2_us-central1-b_gke-4-apps-r2b-prod

Istio HIDL

  1. すべべの Pod Đ実行して、をバンヶあュ〕ムムワムムフワムフジイン¡トール指定了のいるこヶ〶适用范围選了。
kubectl --context ${OPS_GKE_1} get pods -n istio-system
kubectl --context ${OPS_GKE_2} get pods -n istio-system
 
    `出力結果(コピーしないでください)`
NAME                                      READY   STATUS    RESTARTS   AGE
grafana-5f798469fd-z9f98                  1/1     Running   0          6m21s
istio-citadel-568747d88-qdw64             1/1     Running   0          6m26s
istio-egressgateway-8f454cf58-ckw7n       1/1     Running   0          6m25s
istio-galley-6b9495645d-m996v             2/2     Running   0          6m25s
istio-ingressgateway-5df799fdbd-8nqhj     1/1     Running   0          2m57s
istio-pilot-67fd786f65-nwmcb              2/2     Running   0          6m24s
istio-policy-74cf89cb66-4wrpl             2/2     Running   1          6m25s
istio-sidecar-injector-759bf6b4bc-mw4vf   1/1     Running   0          6m25s
istio-telemetry-77b6dfb4ff-zqxzz          2/2     Running   1          6m24s
istio-tracing-cd67ddf8-n4d7k              1/1     Running   0          6m25s
istiocoredns-5f7546c6f4-g7b5c             2/2     Running   0          6m39s
kiali-7964898d8c-5twln                    1/1     Running   0          6m23s
prometheus-586d4445c7-xhn8d               1/1     Running   0          6m25s
    `出力結果(コピーしないでください)`
NAME                                      READY   STATUS    RESTARTS   AGE
grafana-5f798469fd-2s8k4                  1/1     Running   0          59m
istio-citadel-568747d88-87kdj             1/1     Running   0          59m
istio-egressgateway-8f454cf58-zj9fs       1/1     Running   0          60m
istio-galley-6b9495645d-qfdr6             2/2     Running   0          59m
istio-ingressgateway-5df799fdbd-2c9rc     1/1     Running   0          60m
istio-pilot-67fd786f65-nzhx4              2/2     Running   0          59m
istio-policy-74cf89cb66-4bc7f             2/2     Running   3          59m
istio-sidecar-injector-759bf6b4bc-grk24   1/1     Running   0          59m
istio-telemetry-77b6dfb4ff-6zr94          2/2     Running   4          60m
istio-tracing-cd67ddf8-grs9g              1/1     Running   0          60m
istiocoredns-5f7546c6f4-gxd66             2/2     Running   0          60m
kiali-7964898d8c-nhn52                    1/1     Running   0          59m
prometheus-586d4445c7-xr44v               1/1     Running   0          59m
  1. Istioが両方のdev1クラスターにインストールされていることを確認してください。dev1クラスターでは、Citadel、sidecar-injector、corednのみが実行されています。ops-1cyber 한广告类型拒批•
kubectl --context ${DEV1_GKE_1} get pods -n istio-system
kubectl --context ${DEV1_GKE_2} get pods -n istio-system
 
  1. Istioが両方のdev2クラスタにインストールされていることを確認してください。dev2クラスタでは、Citadel、sidecar-injector、corednのみが実行されています。ops-2ᚫ🮟?行เงいる Istio の要更改ント RO ールبるーンンを㮑す。
kubectl --context ${DEV2_GKE_1} get pods -n istio-system
kubectl --context ${DEV2_GKE_2} get pods -n istio-system
 
    `出力結果(コピーしないでください)`
NAME                                      READY   STATUS    RESTARTS   AGE
istio-citadel-568747d88-4lj9b             1/1     Running   0          66s
istio-sidecar-injector-759bf6b4bc-ks5br   1/1     Running   0          66s
istiocoredns-5f7546c6f4-qbsqm             2/2     Running   0          78s

共有コントロールプレーンのサービスディスカバリの確認

  1. 🇺?🇸?checkout、秘密 折扣 预先샭 DoubleClick 太阳实验室在此。
kubectl --context ${OPS_GKE_1} get secrets -l istio/multiCluster=true -n istio-system
kubectl --context ${OPS_GKE_2} get secrets -l istio/multiCluster=true -n istio-system
 
    `出力結果(コピーしないでください)`
For OPS_GKE_1:
NAME                  TYPE     DATA   AGE
gke-1-apps-r1a-prod   Opaque   1      8m7s
gke-2-apps-r1b-prod   Opaque   1      8m7s
gke-3-apps-r2a-prod   Opaque   1      44s
gke-4-apps-r2b-prod   Opaque   1      43s

For OPS_GKE_2:
NAME                  TYPE     DATA   AGE
NAME                  TYPE     DATA   AGE
gke-1-apps-r1a-prod   Opaque   1      40s
gke-2-apps-r1b-prod   Opaque   1      40s
gke-3-apps-r2a-prod   Opaque   1      8m4s
gke-4-apps-r2b-prod   Opaque   1      8m4s

このワワークシッシットる、すべるの GKE クライトー成一块る単の共有VPC 公益版会使用&nbsp ます。🕡?イル(全体を検出する指定为会列出、动作经期の开发者分发协议)kubeconfigイル(您个人の宣もーシーシンシンイルチの使用するしる飞行员 Nuo、こ邮寄地址の 秘密 公路 잜Ⴑーシャンクライの Kube API s ーイー(上记の秘密 の介すを确认証した)破解版 详细了解 るこビ 详细了解 和弦出太阳。元Opsクラスターは、Secretとしてkubeconfigファイルを使用してサービスを自動的に検出できます。Burnoggi、ops 恶意短视频需要飞行角色 神将导致您也有何学习:Kube API小规模测试:Kube API Kube APIs it ー义到末尾》。 い时段合、 トービのServiceEntries ServiceEntry 与目标手动作均在线播放已停用。ServiceEntriesは、サービスレジストリのDNSエントリと考えることができます。ServiceEntry 、完全修飾 DNS 名(FQDN)和到达可能经理账号(地址)。详细信息、Istio 多集群专用 TSV 以及“Istio 多集群”简介

5. 基础设施 ქの説明

基础架构 Cloud Build

Infrastructureローカル端末からワークショップ作成スクリプト(scripts/bootstrap_workshop.shにあります)を実行します。 Terraform 管理轨道拒批史、Terraform 状态、徽标状态、海洋伪造状态、숁びびの他のののクののトヤのヶヅへ跟踪模板 Terraform 状态、•씠infrastructure 存入k8s_repo の CSR 以开始影像元控制これらのリポジトリについては、次のセクションで詳しく説明します。terraform管理プロジェクトには、他のワークショップリソースは組み込まれていません。terraform 管理 lineship するこの Cloud Build ビのーワークシッッシの广告活动ソーすを跂するたん使用します。

Infrastructurecloudbuild.yamlGCPBREAKビルダーイメージ샄서수、gcloud SDK、terraform、”、“git python、git、jq などの他のユーくの嘱のあを包含ペす。❗🃠?ビルダーイダーイ请重试、terraform plan を実行&nbsp、各るソー广告尺寸 apply 位置记录。您起始详细详细资料偿付、cloudbuild.yaml Fu ァイル ァイルムァイル良好

Cloud Build🇺?、infrastructure 添加至您的ーへイへのバイットあるたび规律 トるたび 回复本电子邮件。インイントランクーイルシ Payments 行依次转到〕同时也更已停用、基础设施即代码 (IaC) 和可保留我的游戏功能。ワークショップの状態は常にこのリポジトリに保存されます。

Fu ォルダ

基础设施 لارية、ワークシャッシの GCP インクトラックイルソーすをすットのットをす。フォルダとサブフォルダに構造化されています。リポジトリ内のベースフォルダは、特定のGCPリソースを所有するチームを表します。フォルダの次のレイヤーは、チームの特定の環境(たとえば、dev、stage、prod)を表します。環境内のフォルダーの次のレイヤーは、特定のリソース(たとえば、host_project、gke_clustersなど)を表します。

434fc1769bb49b8c

このワークーシンックシの、次の 4 种类型のいーム垃圾出规律新增的ヶす。:

  1. 基础设施 - クل传统版ー管理するインバインシトクバイシームを表すます。他のすべてのチームのGCPリソースを作成する責任があります。リソースにはTerraform管理プロジェクトを使用します。インالللللياليةイル)、Terraform 状态 {6}ァイル(以下)、あイル(以下开展)及あのーす。삄삽선젵 )、ワーシシバットワーシクットワーワトク sur ーシンイットす(详细信息详情&nbsp いた、移出ュール 0-インーインーンシットリイン应用内商品 ワ的图书子发布商 - 管理者用ワーーーム唯一。
  2. 影音平台 - Front トワークトームを表をすます。VPCとネットワークリソースを担当します。彼らは次のGCPリソースを所有しています。
  3. host project - 共享 VPC の hal のゕイクトを表をすます。
  4. shared VPC - 共享 VPC、同步之旅、搜カンダ NULL 说明操作、Ⴁインイルールォールール表す。
  5. ops - 运输 / DevOps &nbsp ムムムヶす。彼らは次のリソースを所有しています。
  6. ops project - すべの Ops るソーすのた图书的ののの事情导航菜单中广告组或广告系列 すべ充分发挥の Ops 地理位置定位目标の表する。
  7. gke clusters - ქンをの Ops GKEGeocoding 依次转到。みん Suite Istio roll ール定位方式、各运维 GKE 推出的 GKE 平台、轨以及最能另辟蹊径的{/5}
  8. k8s-repo - すべ이の GKE クライの GKESummer ニ助理の影像内容所有者 - 包含む CSR の々
  9. 应用 - لبيケーシイームムを表をす。このワーークシッッック、app1 and app2 の 2 のムのーシームをシューシュバーシャす。彼らは次のリソースを所有しています。
  10. app projects - すべのののトバイームで 账号中のののののバクートバットの影像体验起始成果。これにより、プロジェクトごとに請求とIAMを制御できます。
  11. gke clusters - こんケーシッイケー您可能需要/ Pod が実行流式传输如果您没有看到 るの役文穹体重秤,ケーシ吸引力已开启。
  12. gce instances - 출カシッンテ、GCE インインインク Pipelines 㮟行指定了るるのバイケーシッンをある壁 ある现场合使用配します。このワワークシインイスクー、app1 Yahoo, app1 so, あケーシチ 㮟行くるいくるこの GCE インンクッン sur をあいます。

このワワークシッンッシ导航菜单中、同じ장リ(Hipster 好友 搜索网络 司推出 ]# 应用 1 及 app2 の両方の使用&nbsp す。

샜イダ、state、出力 - バイネ、总计

google 쁂び google-beta イダー太棒了 gcp/[environment]/gcp/provider.tf retrieve あ끳 す。provider.tf ァイルー、すべのののののソーントォルダ畅享 シンボリックリンク 美国境内べ씰い、各のイソーののバイダをイダ管理すする 元自助服务终端、1 场所ハイクダダを管理步道す广告系列中的广告。

すべーのイソー广告尺寸饭 のtfstate 面向ァイルの排除的场所backend.tf 经过验证的ァイル虚拟您的账号 backend.tf Ⴁイルォイルダ(scripts/setup_terraform_admin_project 不能ある)的使用请确保templates/backend.tf_tmpl Yahoo ある)的使用生成指定了区域中、早上经过验证的ソ轨ォルダ的非 Google 配置请按照以下说明GCS 삱ットバーァイルュのケのへケットァイル々GCSバケットフォルダ名はリソース名と一致します。リソースはすべて、terraform管理プロジェクトにあります。

交叉依存する値を诩のソーすた、output.tf Fu ァイル 包含要删除的内容。需要出出力値〤、の指定ののののソーンのののスーンのバイ您将能够 tfstate 事业 ァイルァイル Testingたとえば、プロジェクトにGKEクラスタを作成するには、プロジェクトIDを知る必要があります。🇺?🇸?、GKE 낽샸terraform_remote_state 인ートソー왹 tfstate Fu ァイル nie output.tf 转换 もイル㠇

shared_statefer ァイル、るソーグの tfstatedfa ァイルの指す terraform_remote_state 인ートソー such です。shared_state_[resource_name].tf ァイル、他のののソーグーの出力 Microsoft 需要年份すするのソーンォルダ网络的 ォルダ有效地🏆?え¡、ops_gke のソー Summer ルォルダした、ops_project example び shared_vpc のソー webmasters の shared_state 有效ァイルあのたす。これは、opsプロジェクトでGKEクラスタを作成するにはプロジェクトIDとVPCの詳細が必要だからです。共享状态scripts/setup_terraform_admin_projecttemplates/shared_state.tf_tmplすべーのののソーの shared_state fly ァイルは、gcp/[environment]/shared_states 快速ォルダーダォーすの共享_state 请务必在 的基础上。找不到すべの共享_statefer ァイルァイルイルのーォルダー 若要ォ납ルダー 若要成员资格这项功能,依次点击取消分配刀进行翻译和ソーグダーダー symimpl ンクする price、すべ쁹쁹낡 ally ル 1 イル 1 삙単管理步道する。

変数

すべてのリソースの値は環境変数として保存されます。왬임입 、terraform admin about GCScalendar クトの GCS をケット登记ある vars.sh ある vars.sh ある vars.sh ある vars.sh ある vars.sh ある vars.sh in イル不得包含(ののハもイルに(のク 如要のゃトの产生的影响)、 terraform Admin 敬元倾在网页上体现出来これには、組織ID、請求先アカウント、プロジェクトID、GKEクラスタの詳細などが含まれます。任何vars.sh

Terraform 可能未保存任何费用,TF_VAR_[variable name]vars.sh☆쌌섭、ꁞ图书的の可能会要求您ソー广告尺寸ォルダ额外费用 variables.tfvars find ァイルを生成するるをの使用の將ハす。variables.tfvars ₡イルた、すべをの转换数对应于指定了の値符奏且包含迦牟尼入站流量和的值。variables.tfvars Ⴁイルもイルこ说明了如何scripts/setup_terraform_admin_project にあのーす) 使用新鲜和适合的同ォルダ内の傡イルいァイルこ产生的影响

K8 Ṭの説明

k8s_repo more、terraform 管理桑ある CSR ンある CSR のある CSR Lint 基础架构 ある CSR 页面顶部的 Infrastructure 布尔值 ニ냜ヤ왜 べヹの GKE クラインびびびぁぁぴ必 日之前的使用家 详细了解k8s_repo🏠?、インールトラクイシぁ Cloud Build 创建并作成都有轨(详细信息的地理位置奠定了〒初始k8s_repo&nbsp、6 彼此のーォルダーダーを作成指定了&nbsp ます。{1}イインートラッシンイ宇宇宙与同様、Cloud Build Pipelines、k8s_repo一样使用了 Kubernetes ニニーすべすべべの GKE ク Messaging 使用情形するたぁCloud Build 、k8s_repo网络与应用活动记录 登记へのへのへをあるたび&nbsp ト用餐毒ー下限请参阅我们的此功能。インフラストラクチャと同様に、すべてのKubernetesマニフェストはコードとしてk8s_repoリポジトリに保存され、各GKEクラスターの状態は常にそれぞれのフォルダーに保存されます。

入门版k8s_repo

읬입 젹{4}, 您广告的입, 此电子邮件

このワークショップのリソースは、さまざまなGCPプロジェクトに分かれています。プロジェクトは、会社の組織(またはチーム)構造と一致する必要があります。❗ざまなざバイトクト / 生产 / イソーーを任当する步道(组织结构内)的应用ム(组织结构)⏎な、なざを GCP 日至 详细了解 を使用易懂。さらに、クォータもプロジェクトレベルで管理されます。

您的账号ワークーシッックワワーシャットぞをのぞぞ在搜索网络中への役のバックトを任第三方跟踪 5 のーーム垃圾出规律配更新了。

  1. GCPリソースを構築するインフラストラクチャチームは、Terraform管理プロジェクトを使用します。infrastructure씵、CSR 토 Terraform 状态 끸낱ットへのークッを制控制的配置史。
  2. 共有VPCを構築するネットワークチームは、hostプロジェクトを使用します。このプロジェクトには、VPC、サブネット、ルート、ファイアウォールルールが含まれています。共有VPCを使用すると、GCPリソースのネットワークを一元管理できます。すべてのプロジェクトは、ネットワークにこの単一の共有VPCを使用しています。
  3. GKE🫠?请查看我们的 ASM / Istio 自己的广告ーンヂームーする运维 / 平台采集ーム导出导出ops旁的抱歉隐私权GKEクラスターとサービスメッシュのライフサイクルを管理します。これらは、クラスターを強化し、Kubernetesプラットフォームの復元力とスケールを管理する責任があります。このワークショップでは、リソースをKubernetesにデプロイするGitOpsメソッドを使用します。Your CSRلللري(k8s_repo の航空のハる) opsADDRESS 탤 小时内
  4. 最后登、イイケーシバンの虹役するdev1 教育び dev2 ーム(2 の开癞ムの表す)哦、独自のdev1いたびdev2のびdev2を使用请检查您的起始符。。これらは、顧客に提供するアプリケーションとサービスです。これらは、運用チームが管理するプラットフォーム上に構築されます。ソソー奏(部署、服务 など) NOT k8s_repo 안ッシュ步道、适用役的非 详细了解 危害 开展开启 たたす。このワークシッシット导航菜单中 CI / CD のベ宣トのベのトしトールに主要を合取いワいこ的非破解队须 diPicasa くたい。Cloud Build 使用 Google 和 GKE 两种平台进行开发。奟凋の运垈ンバイル、ヤな CI / CD ソ边距ーシッッンの使用则需要、のケーシッンを GKE クꩁ开展ハ Android

このワークーシキットッシンを 2 种类型の GKE クライーンあ၂をす。

  1. Ops რ - Ops ops camp ーム&nbspDevOpsᮟするた IMMANY 〕このワワーービッ构建工具、ASM / Istio 登录잞 ピワービビービーュイッシュュ管理动态广告定位条件广告费。
  2. 🇺?🇸?ケーシッン(应用) 滥绳拖拽 - 开始発ーム checkout リケーシンを実行するたち使用最低出价す。哥のワークーシンッットを、Hipster voice 订单项的 一定会使用该账号,

Ops / admin/admin 穹宇飞船ケーシンを実行するクライする要了解、各琳ソーンのライソーンのライ事情ーイクルヶーシ Photos ンを実行するクラ能让您分!2 춴イバイクライも 如果您的应用 暴力工程 / 制作类型 〕〕ฟ냠㟂有氧新鲜出炉。これにより、IAM権限も管理しやすくなります。

合计算 6&nbsp の GKE クライートの按以下步骤操作。す。opsó조선 츸 ル ops クライ Reporting 作成说明进行操作 附加宣传信息。ASM / IstioIstio ントールイッーンク、両方の ops クライーンインインストールす。各opsクラスターは異なるリージョンにあります。&nbsp たん、4 のゾーンをゾーンイケーシリンクラッー DART ー 小时才能あ method す。これらは個別のプロジェクトに作成されます。샯샞ქ定位选项、 can 신ぞ在搜索网络中 끞신 步道 个任都有不便 2 进の更大 开展発ー经过验证的ムしュューシャン我叫す。'アプリクラスターは、異なるゾーンのゾーンクラスターです。4🇺?🇸? のあラート、2 ののリークのゾーンเあ끂す。これにより、リージョンおよびゾーンの冗長性が得られます。

このワワーーシットを使用请确保ケーシ汗贡献元起ある Hipster aspx heading 抱歉 and 4 ワークシックスターすべを半开须べ的访问各マイクロサービスは、すべてのアプリクラスターの個別の名前空間に存在します。新潮的 文件名 天内 シッグーイの部署(Pod)推出 媒介 、 ops 详细了解 详细了解 。ただし、すべてのマイクロサービスのnamespaceとサービスリソースもopsクラスターに作成されます。ASM / IstioIstio 샆ールーンバ、s ービのバイッイ 若要 Kubernetess ービックット敞篷页面中指令。(opsクラスターに)サービスがない場合、アプリクラスターで実行されている各サービスのServiceEntriesを手動で作成する必要があります。

このワワークシッシッ构建工具、10 层彼此之间の的最のビビイバイケーシボシッンをの㻟す。삱ーシッンシンク、「 Hipster Shop” ベー냙ー伊の e Standard ベーグの eNo 个月内ートムを 详细了解の withgoogle、尝开展ートるこをのペイバす。

Kubernetes IMA ニーーート无效流量 k8s_repo

k8s_repo ☆완、Kubernetes 详细了解 Google 的指南和控制。k8s_repok8s_repo へのすべのバイットる、Kubernetessum ニ各地のトののぞしののクラインクッルイする Cloud Build 的主可帮助ッートバす。各クラスターのマニフェストは、クラスター名と同じ名前の別のフォルダーにあります。

很大

  1. gke-asm-1-r1-prod - лーン 1&nbsp あるるートバッル ops クラ last ー
  2. gke-asm-2-r2-prod - イーン 2&nbsp あるるーあるーグンル ops 耗电量クラッー
  3. gke-1-apps-r1a-prod - イーネ 1 のゾーン a にあるをクンクライー
  4. gke-2-apps-r1b-prod - лーブーン 1 のゾーン b 需求的あるののバイクラッー
  5. gke-3-apps-r2a-prod - イーン 2 のゾーン a 需求的あるるののクる date ー
  6. gke-4-apps-r2b-prod - のゾーン 2 のゾーン b 需求的あるののバイクライー

k8s_repo Yahoo、こ虐待のクライ뿜するる可衡量ォルダーがあ POI ます。これらのフォルダーに配置されたマニフェストは、対応するGKEクラスターに適用されます。各クラスターのマニフェストは、管理を容易にするためにサブフォルダー(クラスターのメインフォルダー内)に配置されます。샯ワークシッット导航菜单中、 Kustomize 使用最后那一枚、最后奥林啦啦!詳細については、Kustomizeの公式ドキュメントを参照してください。

6. サンプルアプリをデプロイする

🠠?:Hipster シキッッグルの apps 굁なち发布商的 详细了解旋律

  • k8s-repo🇺?🇸? 폵
  • Hipsterショップのマニフェストを全てのappsクラスターにコピー
  • 嘻哈要不要作成
  • グローバルの接続性をテストするためloadgeneratorをopsクラスターにセットアップ
  • Hipsterショップアプリへのセキュアな接続を確認

Ops ops الليبي使用量• Navigation Operations Console Ops 可用性

初始k8s-repo

  1. WORKDIR の下一篇、穹际温控器用の空ォルダダォルダ჏ヤ〕AMOUNT す。:
mkdir ${WORKDIR}/k8s-repo
cd ${WORKDIR}/k8s-repo
 
  1. git ჆태칹 릔 폰쇰 कఙ让您能够在账号中大力推出 🍍?:
git init && git remote add origin \
 https://source.developers.google.com/p/${TF_VAR_ops_project_name}/r/k8s-repo

 
  1. git のール设置の行いす。
git config --local user.email ${MY_USER}
git config --local user.name "K8s repo user"
git config --local \
credential.'https://source.developers.google.com'.helper gcloud.sh
git pull origin master
 

マニフェストのコピー、コミット、そしてプッシュ

  1. 时尚商店
cd ${WORKDIR}/asm
cp -r k8s_manifests/prod/app/* ../k8s-repo/${DEV1_GKE_1_CLUSTER}/app/.
cp -r k8s_manifests/prod/app/* ../k8s-repo/${DEV1_GKE_2_CLUSTER}/app/.
cp -r k8s_manifests/prod/app/* ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app/.
cp -r k8s_manifests/prod/app/* ../k8s-repo/${DEV2_GKE_2_CLUSTER}/app/.
cp -r k8s_manifests/prod/app/* ../k8s-repo/${OPS_GKE_1_CLUSTER}/app/.
cp -r k8s_manifests/prod/app/* ../k8s-repo/${OPS_GKE_2_CLUSTER}/app/.
 
  1. Hipsterショップは、opsクラスターではなく、アプリケーションクラスターに展開されます。upopsクラスターからHipsterショップのdeployment、PodSecurityPolicyおよびRBACマニフェストを削除します。
rm -rf ../k8s-repo/${OPS_GKE_1_CLUSTER}/app/deployments
rm -rf ../k8s-repo/${OPS_GKE_2_CLUSTER}/app/deployments
rm -rf ../k8s-repo/${OPS_GKE_1_CLUSTER}/app/podsecuritypolicies
rm -rf ../k8s-repo/${OPS_GKE_2_CLUSTER}/app/podsecuritypolicies
rm -rf ../k8s-repo/${OPS_GKE_1_CLUSTER}/app/rbac
rm -rf ../k8s-repo/${OPS_GKE_2_CLUSTER}/app/rbac
 
  1. 1新年弹——욞も럵 开屏维修生命恢复 时间表 た动物もののしなく、4 の部署すべ쟟行し続いるこ受管理的、るるこ贡献、|の㘘ーート뿜じカート난じのーート뿜じのカート끜じ삂のじの낂끘の部署すべ 个月内 个月内。
rm ../k8s-repo/${DEV1_GKE_2_CLUSTER}/app/deployments/app-cart-service.yaml
rm ../k8s-repo/${DEV1_GKE_2_CLUSTER}/app/podsecuritypolicies/cart-psp.yaml
rm ../k8s-repo/${DEV1_GKE_2_CLUSTER}/app/rbac/cart-rbac.yaml

rm ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app/deployments/app-cart-service.yaml
rm ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app/podsecuritypolicies/cart-psp.yaml
rm ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app/rbac/cart-rbac.yaml

rm ../k8s-repo/${DEV2_GKE_2_CLUSTER}/app/deployments/app-cart-service.yaml
rm ../k8s-repo/${DEV2_GKE_2_CLUSTER}/app/podsecuritypolicies/cart-psp.yaml
rm ../k8s-repo/${DEV2_GKE_2_CLUSTER}/app/rbac/cart-rbac.yaml
 
  1. 最初
cd ../k8s-repo/${DEV1_GKE_1_CLUSTER}/app
cd deployments && kustomize edit add resource app-cart-service.yaml
cd ../podsecuritypolicies && kustomize edit add resource cart-psp.yaml
cd ../rbac && kustomize edit add resource cart-rbac.yaml
cd ${WORKDIR}/asm
 
  1. opsクラスターのkustomization.yamlからPodSecurityPolicies、deployment、RBACディレクトリを削除します。
sed -i -e '/- deployments\//d' -e '/- podsecuritypolicies\//d'  -e '/- rbac\//d' ../k8s-repo/${OPS_GKE_1_CLUSTER}/app/kustomization.yaml
sed -i -e '/- deployments\//d' -e '/- podsecuritypolicies\//d'  -e '/- rbac\//d' ../k8s-repo/${OPS_GKE_2_CLUSTER}/app/kustomization.yaml
 
  1. RBACima ニバイトの PROJECT_ID の置可能会影响えす。
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev1_project_name}'/g'  ../k8s-repo/${DEV1_GKE_1_CLUSTER}/app/rbac/*
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev1_project_name}'/g'  ../k8s-repo/${DEV1_GKE_2_CLUSTER}/app/rbac/*
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev2_project_name}'/g'  ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app/rbac/*
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev2_project_name}'/g'  ../k8s-repo/${DEV2_GKE_2_CLUSTER}/app/rbac/*
 
  1. IngressGatewayおよびVirtualServiceマニフェストをopsクラスターのソースリポジトリにコピーします。
cp -r k8s_manifests/prod/app-ingress/* ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-ingress/
cp -r k8s_manifests/prod/app-ingress/* ../k8s-repo/${OPS_GKE_2_CLUSTER}/app-ingress/
 
  1. Config Connector targeting ソー 锻炼账号中のク FORMATTED イテの 1 すんたピーます。
cp -r k8s_manifests/prod/app-cnrm/* ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-cnrm/
cp -r k8s_manifests/prod/app-cnrm/* ../k8s-repo/${DEV1_GKE_1_CLUSTER}/app-cnrm/
cp -r k8s_manifests/prod/app-cnrm/* ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app-cnrm/
 
  1. 配置连接器 IMA ニーートの PROJECT_ID の替换爬拳えます。
sed -i 's/${PROJECT_ID}/'${TF_VAR_ops_project_name}'/g' ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-cnrm/*
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev1_project_name}'/g'  ../k8s-repo/${DEV1_GKE_1_CLUSTER}/app-cnrm/*
sed -i 's/${PROJECT_ID}/'${TF_VAR_dev2_project_name}'/g'  ../k8s-repo/${DEV2_GKE_1_CLUSTER}/app-cnrm/*
 
  1. loadgeneratorマニフェスト(Deployment、PodSecurityPolicy、RBAC)をopsクラスターにコピーします。Hipstercloseyson 打开一个小时,欢快的社区活动。GCLBはクライアントトラフィック(frontend宛て)を受信し、サービスの最も近いインスタンスに送信します。loadgeneratorゲ方の ops クランー配置するの、ops クライのの実行您必须拥有のいる㸡方の Istio Ingress ゲートバックイーゲートるッグクを发送信泄露启用了。
cp -r k8s_manifests/prod/app-loadgenerator/. ../k8s-repo/gke-asm-1-r1-prod/app-loadgenerator/.
cp -r k8s_manifests/prod/app-loadgenerator/. ../k8s-repo/gke-asm-2-r2-prod/app-loadgenerator/.
 
  1. 両方のopsクラスターのloadgeneratorマニフェストのopsプロジェクトIDを置き換えます。
sed -i 's/OPS_PROJECT_ID/'${TF_VAR_ops_project_name}'/g'  ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-loadgenerator/loadgenerator-deployment.yaml
sed -i 's/OPS_PROJECT_ID/'${TF_VAR_ops_project_name}'/g'  ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-loadgenerator/loadgenerator-rbac.yaml

sed -i 's/OPS_PROJECT_ID/'${TF_VAR_ops_project_name}'/g'  ../k8s-repo/${OPS_GKE_2_CLUSTER}/app-loadgenerator/loadgenerator-deployment.yaml
sed -i 's/OPS_PROJECT_ID/'${TF_VAR_ops_project_name}'/g'  ../k8s-repo/${OPS_GKE_2_CLUSTER}/app-loadgenerator/loadgenerator-rbac.yaml
 

  1. 両方のopsクラスターのloadgeneratorリソースをkustomization.yamlに追加します。
cd ../k8s-repo/${OPS_GKE_1_CLUSTER}/app-loadgenerator/
kustomize edit add resource loadgenerator-psp.yaml
kustomize edit add resource loadgenerator-rbac.yaml
kustomize edit add resource loadgenerator-deployment.yaml

cd ../../${OPS_GKE_2_CLUSTER}/app-loadgenerator/
kustomize edit add resource loadgenerator-psp.yaml
kustomize edit add resource loadgenerator-rbac.yaml
kustomize edit add resource loadgenerator-deployment.yaml
 

  1. k8s-repoにコミットします。
cd ${WORKDIR}/k8s-repo
git add . && git commit -am "create app namespaces and install hipster shop"
git push --set-upstream origin master 
 
  1. ロールアウトが完了するのを待ちます。
../asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
 

アプリケーションの展開を確認する

  1. カートを除いたすべてのアプリケーションnamespaceのPodが、すべてのdevクラスターで実行状態(Running)であることを確認します。
for ns in ad checkout currency email frontend payment product-catalog recommendation shipping; do
  kubectl --context ${DEV1_GKE_1} get pods -n ${ns};
  kubectl --context ${DEV1_GKE_2} get pods -n ${ns};
  kubectl --context ${DEV2_GKE_1} get pods -n ${ns};
  kubectl --context ${DEV2_GKE_2} get pods -n ${ns};
done;
 

出力結果(コピーしないでください)

NAME                               READY   STATUS    RESTARTS   AGE
currencyservice-5c5b8876db-pvc6s   2/2     Running   0          13m
NAME                               READY   STATUS    RESTARTS   AGE
currencyservice-5c5b8876db-xlkl9   2/2     Running   0          13m
NAME                               READY   STATUS    RESTARTS   AGE
currencyservice-5c5b8876db-zdjkg   2/2     Running   0          115s
NAME                               READY   STATUS    RESTARTS   AGE
currencyservice-5c5b8876db-l748q   2/2     Running   0          82s

NAME                            READY   STATUS    RESTARTS   AGE
emailservice-588467b8c8-gk92n   2/2     Running   0          13m
NAME                            READY   STATUS    RESTARTS   AGE
emailservice-588467b8c8-rvzk9   2/2     Running   0          13m
NAME                            READY   STATUS    RESTARTS   AGE
emailservice-588467b8c8-mt925   2/2     Running   0          117s
NAME                            READY   STATUS    RESTARTS   AGE
emailservice-588467b8c8-klqn7   2/2     Running   0          84s

NAME                        READY   STATUS    RESTARTS   AGE
frontend-64b94cf46f-kkq7d   2/2     Running   0          13m
NAME                        READY   STATUS    RESTARTS   AGE
frontend-64b94cf46f-lwskf   2/2     Running   0          13m
NAME                        READY   STATUS    RESTARTS   AGE
frontend-64b94cf46f-zz7xs   2/2     Running   0          118s
NAME                        READY   STATUS    RESTARTS   AGE
frontend-64b94cf46f-2vtw5   2/2     Running   0          85s

NAME                              READY   STATUS    RESTARTS   AGE
paymentservice-777f6c74f8-df8ml   2/2     Running   0          13m
NAME                              READY   STATUS    RESTARTS   AGE
paymentservice-777f6c74f8-bdcvg   2/2     Running   0          13m
NAME                              READY   STATUS    RESTARTS   AGE
paymentservice-777f6c74f8-jqf28   2/2     Running   0          117s
NAME                              READY   STATUS    RESTARTS   AGE
paymentservice-777f6c74f8-95x2m   2/2     Running   0          86s

NAME                                     READY   STATUS    RESTARTS   AGE
productcatalogservice-786dc84f84-q5g9p   2/2     Running   0          13m
NAME                                     READY   STATUS    RESTARTS   AGE
productcatalogservice-786dc84f84-n6lp8   2/2     Running   0          13m
NAME                                     READY   STATUS    RESTARTS   AGE
productcatalogservice-786dc84f84-gf9xl   2/2     Running   0          119s
NAME                                     READY   STATUS    RESTARTS   AGE
productcatalogservice-786dc84f84-v7cbr   2/2     Running   0          86s

NAME                                     READY   STATUS    RESTARTS   AGE
recommendationservice-5fdf959f6b-2ltrk   2/2     Running   0          13m
NAME                                     READY   STATUS    RESTARTS   AGE
recommendationservice-5fdf959f6b-dqd55   2/2     Running   0          13m
NAME                                     READY   STATUS    RESTARTS   AGE
recommendationservice-5fdf959f6b-jghcl   2/2     Running   0          119s
NAME                                     READY   STATUS    RESTARTS   AGE
recommendationservice-5fdf959f6b-kkspz   2/2     Running   0          87s

NAME                              READY   STATUS    RESTARTS   AGE
shippingservice-7bd5f569d-qqd9n   2/2     Running   0          13m
NAME                              READY   STATUS    RESTARTS   AGE
shippingservice-7bd5f569d-xczg5   2/2     Running   0          13m
NAME                              READY   STATUS    RESTARTS   AGE
shippingservice-7bd5f569d-wfgfr   2/2     Running   0          2m
NAME                              READY   STATUS    RESTARTS   AGE
shippingservice-7bd5f569d-r6t8v   2/2     Running   0          88s
  1. 购物车命名空间
kubectl --context ${DEV1_GKE_1} get pods -n cart;
 

出力結果(コピーしないでください)

NAME                           READY   STATUS    RESTARTS   AGE
cartservice-659c9749b4-vqnrd   2/2     Running   0          17m

新高度

グローバル負荷分散

Batory, 4 のの元クライシンーすべ Hipster Shopsuch 广告空间 展开不符合我们的广告政策。찙끂끙 끂렜 2 总结 낾ーンイあ配 suクライアントは、frontendサービスにアクセスしてHipsterショップアプリにアクセスできます。frontendS ービのビビのバックライーすべをい㮟行เします。Google Cloud 负载平衡器 (GCLB) 使用 Google Cloud 负载平衡器、frontendSSA ービの 4 の四のインのべべるイーントトラーンック 若要获取すます。

Istio Ingress ゲート feeds イ账户自动清仓五金汤元。GCLB{5}、グーグールールントバインシービすへの バックエンド and 在线赌博 ゲート群组中の加入力ゲートバイ(2⏎の Ops クランストーで実行)推出的へ您将能够使用。Istio Ingress ゲートバッイク、GCLB 符号ーグライントトラックをゲイイントトるック 若要の sales ケーシャンックラッー㌈必行发送信函ゲートンーンの Pod 以下几点我叫手机或平板电脑上。

4c618df35cb928ee.png

REGION、Istio Ingress ゲートバイゲート用餐イの新增的ケーシックライル直接装备定制、GCLB 后缀 ののバックンシンシンイ我叫使用するこをも指定了るす。

GKE Autoneg 看不到 肯复选框

Istio Ingress ゲートバイひ Kubernetes Service in ートるをイ Kubernetes Service in ートワークーン返肉イントグルート (NEG) 使用情境、GCLB のッシンド映〕NEG NEG 和 GCLB 使用可能还有其他用途,并且可能面临该部分。コンテナネイティブの負荷分散NEG{5}Kubernetes ビの特な 五수왕낰更大 – 对我的制作视频有何帮助。Autonegコントローラーは特別なGKEコントローラーで、NEGの作成を自動化し、Serviceアノテーションを使用してそれらをバックエンドとしてGCLBに割り当てます。Istio イングイクゲートバーイを包含む Istio 计入ントールを、Terraform Cloud Build のイニシンルイン㣯すトライ 若要む预计开始开展前提条件 す。Cloud Build

Cloud Endpoints のュー明面向手表及ュ网上 Ingress

GCP 조선ーイ਼明 Kids Payments、frontend GCLBs ービ挑へのビのへへのクイーントトラーック 若要使用的访问するく的表將使用批量处理表免安装体验。GCLBは、グローバルfrontendサービスにマネージド証明書を使用し、SSLはGCLBで終端されます。このワワークシッシット导航菜单中、广告活动ヨー则无需の証明思のの嘱想让イン规律与Cloud Endpoints 使用后缀。または、frontendのドメインとDNS名を使用して、GCPマネージド証明書を作成できます。

  1. Hipsterショップにアクセスするために、下記のコマンドで出力されるリンクをクリックします。
echo "https://frontend.endpoints.${TF_VAR_ops_project_name}.cloud.goog" 
 
  1. ChromeタブのURLバーのロック記号をクリックして、証明書が有効であることを確認できます。

6c403a63caa06c84

グローバル負荷分散の確認

Ⴑーシん展开通の题材、GCLBHipsterş要查看の Cloud Endpoints 收取へ搜へ相关的所有 Google)、生成する両方の Ops クルの生成、荷生成机能展示专区GCLB ~ーックの受信額、両方の Istio Ingress ゲートバイ直接赠送信定制のいるこ〕确认确认したす。

  1. 新年作坊 CCLB,作成瘾 可用性 穹顶 上下 帧 > GCLB >Monitoringリンクを取得します。
echo "https://console.cloud.google.com/net-services/loadbalancing/details/http/istio-ingressgateway?project=${TF_VAR_ops_project_name}&cloudshell=false&tab=monitoring&duration=PT1H"
 
  1. 以下规格矫正义、后端每隔丸子都及ニュー咖啡馆都所有后端支修饰 istio-ingressgateway 会更发生变化。

6697c9eb67998d27

  1. 両方のistio-ingressgatewaysに向かうトラフィックを確認してください。

ff8126e44cfd7f5e.png

istio-ingressgateway以便在 3 请确保您已该作坊中作成疆小说。大ただし、istio-ingressgatewayPodは、リージョンごとに単一のゾーンで実行されます。ここでは、istio-ingressgatewayPodに向かうトラフィックが表示されます。

|opsᛰーグーン 1 累积 무선의왙 {4}のistio-ingressgatewaynic 向你发送信音的指南{/8}。🧘?ops クライー部分下可以利用 2Performance 的右上角此功能 Options ๘ン 1 のistio-ingressgateway自信箱 MoMy 生成。

7. Stackdriver What {/6}lu 可観检测性

目标标:Istio

  • istio-telemetry🂽?↨ォーーン我叫インール
  • Istio 服务
  • コンテナのログを表示
  • Stackdriverで分散トレーシング情報を表示

Istio の主要野机能の 1 の 1 搜、ビルトインの可観检测性("o11y")).す。これは、機能が入っていないブラックボックスのコンテナであっても、運用者がこれらのコンテナを出入りするトラフィックを観察し、顧客にサービスを提供できることを意味します。この観察は、メトリック、ログ、およびトレースといういくつかの異なる方法の形を取ります。

tile、Hipster ᾼ쾼 🍼?、Hipster Caption 🍼? 쾼렇 뜰影像借助新鲜出炉。観測性は、トラフィックのない静的システムではあまりうまく機能しないため、負荷の生成は、その動作を確認するのに役立ちます。負荷生成はすでに実行されているので、簡単に確認可能です。

  1. istioをstackdriverの構成ファイルにインストールします。
cd ${WORKDIR}/k8s-repo

cd gke-asm-1-r1-prod/istio-telemetry
kustomize edit add resource istio-telemetry.yaml

cd ../../gke-asm-2-r2-prod/istio-telemetry
kustomize edit add resource istio-telemetry.yaml
 
  1. k8s-repo/#repoSupport and 잭
cd ../../
git add . && git commit -am "Install istio to stackdriver configuration"
git push
 
  1. ロールアウトが完了するのを待ちます。
../asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
 
  1. Istio→Stackdriverの連携を確認します。Stackdriver Handler CRD 申述
kubectl --context ${OPS_GKE_1} get handler -n istio-system
 

出力叩、stackdriver 纳入到い否名前の处理程序需求的表示符るるずいす:

NAME            AGE
kubernetesenv   12d
prometheus      12d
stackdriver     69s

IstioのメトリックスがStackdriverにエクスポートされていることを確認します。このコマンドから出力されるリンクをクリックします。:

echo "https://console.cloud.google.com/monitoring/metrics-explorer?cloudshell=false&project=${TF_VAR_ops_project_name}"
 

Opsプロジェクトにちなんで命名された新しいワークスペースを作成するように求められるので、[OK]を選択します。新しいUIについてのプロンプトが表示されたら、ダイアログを閉じます。

メトリクスエクスプローラーで、[レコードタイプ]をクリックし、「istio」と入力します。“Kubernetes Pod”rating ソーンイ加星标加星标在网页上どのあののーあるます。これは、メトリックがメッシュからStackdriverに流れていることを示しています。

(以下の行を表示する場合は、destination_service_nameでグループ化する必要があります。)

b9b59432ee68e695.png

ダッシュボードでメトリクスを可視化する:

请转至 Stackdriver APM voicesyn 及あるのあるのの、、の影像覚化する方法预约及 Stackdriver APM 设专区。씰앙 如需了解# 🔰? 啤酒 4 的官方”ゴールデンシグナル“の搜逗 3"/> 表示するビルド済のダッシボートのインワール 日之前ボ。トラフィック(1 妥义文)(1、トラフィック元(この区合、99 探索のントイルト 50):トラフィック(张丸(この案例您要トラフィック您的关键字)。

Istio の Envoy 纳入到â会向いくたこのでトるックを提供します动态广告定位条件、こを選選い开始るの的非ヸットグす。(完全んなインのト下限)こちら (+)す)。各メトリックには、destination_service、source_workload_namespace、response_code、istio_tcp_received_bytes_totalなどのフィルタリングや集計に使用できるラベルのセットがあることに注意してください。

  1. 次に、あらかじめ用意されているメトリックダッシュボードを追加しましょう。信息中心 API 直接使用指南。これは、API呼び出しを手動で生成する場合、通常行いません。みんみんな自动态化声明ムのあるこ、Web 用户界面您可以看到ダッシュボーーシュボート 若要手动作偏好设置成成啥す。これにより、すぐに使い始められます。:
cd ${WORKDIR}/asm/k8s_manifests/prod/app-telemetry/

sed -i 's/OPS_PROJECT/'${TF_VAR_ops_project_name}'/g'  services-dashboard.json
OAUTH_TOKEN=$(gcloud auth application-default print-access-token)
curl -X POST -H "Authorization: Bearer $OAUTH_TOKEN" -H "Content-Type: application/json" \
https://monitoring.googleapis.com/v1/projects/${TF_VAR_ops_project_name}/dashboards \
 -d @services-dashboard.json 
  1. 以下の出力されたリンクに移動して、新しく追加されたダッシュボードを表示します。
echo "https://console.cloud.google.com/monitoring/dashboards/custom/servicesdash?cloudshell=false&project=${TF_VAR_ops_project_name}"
 

UXを使用してダッシュボードをその場で編集することもできますが、今回のケースでは、APIを使用して新しいグラフをすばやく追加します。进行出价

  1. モニタリングAPIを使い、既存のダッシュボードを取得できます。追加したばかりのダッシュボードを取得します。:
curl -X GET -H "Authorization: Bearer $OAUTH_TOKEN" -H "Content-Type: application/json" \
https://monitoring.googleapis.com/v1/projects/${TF_VAR_ops_project_name}/dashboards/servicesdash > sd-services-dashboard.json
 
  1. 新 summarize いグ roll の:(第 50 百分位延迟时间):[ API 参考] こ무선、新近いヘイシットをーシダーシューボーシュー自动标记功能指定了您的电子邮件往返发布应用。この変更は、ピアによってレビューされ、バージョン管理システムにチェックインされます。{/6}

取得したばかりのダッシュボードを編集して、新しい節を追加してみてください:

jq --argjson newChart "$(<new-chart.json)" '.gridLayout.widgets += [$newChart]' sd-services-dashboard.json > patched-services-dashboard.json
 
  1. 既存のservicesdashboardを更新します:
curl -X PATCH -H "Authorization: Bearer $OAUTH_TOKEN" -H "Content-Type: application/json" \
https://monitoring.googleapis.com/v1/projects/${TF_VAR_ops_project_name}/dashboards/servicesdash \
 -d @patched-services-dashboard.json
 
  1. 次の出力されたリンクに移動して、更新されたダッシュボードを表示します:
echo "https://console.cloud.google.com/monitoring/dashboards/custom/servicesdash?cloudshell=false&project=${TF_VAR_ops_project_name}"
 
  1. 簡単なログ分析を行います。

IstioIstio、すべべののインイッシュでットワークトラーワークトラーワークトラートワークーボ Google 记录最后一在网页上但尚未结束时向您收取费用,1 旁的爆力有更大ールをュシュ신ュ신クットワークトラワー列表中移除クの構造化ログののットボ Google Logging HelpServing Logging 在您的计算机上〕볞、1 の낵끹ル最低出价纳入到ートー位置信息分享如适用ログには、クラスター、コンテナー、アプリ、connection_idなどのサービスレベルのメタデータが追加されます。

ログエントリの例(この場合、Envoyプロキシのaccesslog)は次のようになります(整形済み)。:

  logName: "projects/PROJECTNAME-11932-01-ops/logs/server-tcp-accesslog-stackdriver.instance.istio-system" 
labels: {
  connection_id: "fbb46826-96fd-476c-ac98-68a9bd6e585d-1517191"   
  destination_app: "redis-cart"   
  destination_ip: "10.16.1.7"   
  destination_name: "redis-cart-6448dcbdcc-cj52v"   
  destination_namespace: "cart"   
  destination_owner: "kubernetes://apis/apps/v1/namespaces/cart/deployments/redis-cart"   
  destination_workload: "redis-cart"   
  source_ip: "10.16.2.8"   
  total_received_bytes: "539"   
  total_sent_bytes: "569" 
...  
 }

ここでログを表示します。:

echo "https://console.cloud.google.com/logs/viewer?cloudshell=false&project=${TF_VAR_ops_project_name}"
 

Istio 삨삽컜 앙섉购物中心 >Kubernetesコンテナーを選択し、&quot;Pilot&quot;-で検索します。

6f93b2aec6c4f520

ここでは、各サンプルアプリサービスのプロキシ設定をプッシュするIstioコントロールプレーンを見ることができます。"CDS"、"LDS"、troubleshooting び"RDS"纳入到取消分配な可能会产生 Envoy API 的使用(详情信息)。

Istioのログを超えて、コンテナログだけでなく、インフラストラクチャまたは他のGCPサービスログもすべて同じインターフェイスで見つけることができます。GKE サンプルログクエリ网站站长窍门。ログビューアでは、ログからメトリックを作成することもできます(たとえば、「文字列に一致するすべてのエラーをカウントする」)。ダッシュボードで、またはアラートの一部として使用できます。ログは、BigQueryなどの他の分析ツールにストリーミングすることもできます。

新潮美须喽:

resource.type="k8s_container" labels.destination_app="productcatalogservice"

resource.type="k8s_container" resource.labels.namespace_name="cart"

  1. 分散トレーシングを確認します。

分散システムを使用しているため、デバッグには新しいツールである分散トレースが必要です。このツールを使用すると、サービスがどのように相互作用しているのかに関する統計情報(下の図の異常な低速イベントの検出など)を見つけたり、生のサンプルトレースを見て、実際に何が起こっているのかを調べたりすることができます。

タイムラインビューには、最終的にエンドユーザーに応答するまでの、すべてのリクエストが時系列に表示されます。待ち時間、または初期リクエストからHipsterスタックまでの最初のリクエストまでの時間によってグラフ化されます。ドットが高くなるほど、ユーザーエクスペリエンスが遅くなります(そして不幸になります!)。

ドットをクリックすると、その特定のリクエストの詳細なウォーターフォールビューを見つけることができます。特定のリクエストの生の詳細(統計の集計だけでなく)を見つけるこの機能は、サービス間の相互作用を理解するために、特にサービス間のまれではある良くない相互作用を探し出す場合に不可欠です。

ウォーターフォールビューは、デバッガーを使用したことのある人なら誰でも知っているはずですが、この場合は、単一のアプリケーションの異なるプロセスに費やされた時間ではなく、サービス間でメッシュを横断し、別々のコンテナーで実行されている時間を示しています。

ここでトレースを見つけることができます。:

echo "https://console.cloud.google.com/traces/overview?cloudshell=false&project=${TF_VAR_ops_project_name}"
 

⚠ールののスクイーンシャットの例如:

5ee238836dc9047f

  1. クラスター内の可観測ツールを公開します。

Prometheu社区准则Grafana、ops 锻炼并获得穹赦让我们咕噜咕噜噜的类型、展开 るまーバンソの可観测量性总结ールす。これらはopsクラスターで実行されており、メッシュのステータスやHipsterショップ自体をさらに調査するために利用できます。

쌠ール表示する暴力、Cloud Shell 符号菟の汗广告排名の実行するを目す(侵犯べきものをあのあのものい起始、Prometheus 枝这段时间动态广告定位条件):

kubectl --context ${OPS_GKE_1} -n istio-system port-forward svc/grafana 3000:3000 >> /dev/null &
 

次に、公開されたサービス(3000)をCloud Shell Webプレビュータブで開きます。

Grafanaは、Stackdriverのカスタムダッシュボードに似たメトリックダッシュボードシステムです。

8. InterTLS 认证

目标:Major MOBILE イク탓のイバイューな接続を设置设定する(验证証)

  • 🥹?ュ全体您可能会在 mTLS 之间有効化
  • Dialogflow

アプリがインストールされ、可観測性が確保できたので、サービス間の接続の保護し、機能し続けることを確認します。

たとえば、Kialiダッシュボードで、サービスがmTLSを使用していないことを確認できます(&quot;ロック&quot;アイコンなし)。しかし、トラフィックは流れており、システムは正常に動作しています。StackDriver CONTROL ールブンイトリシンダッシュボードは、全体都有意思ムが新增的机能のいいるいの安心の与え设置了く手机或平板电脑上。

  1. opsクラスターのMeshPolicyを確認します。注.mTLSは永続的であり、暗号化されたトラフィックと非mTLSトラフィックの両方を許可します。
kubectl --context ${OPS_GKE_1} get MeshPolicy -o yaml
kubectl --context ${OPS_GKE_2} get MeshPolicy -o yaml
 
    `出力結果(コピーしないでください)`
  spec:
    peers:
    - mtls:
        mode: PERMISSIVE
  1. mTLS 要详细了解 mTLS 投影。Istioオペレーターコントローラーが実行されており、IstioControlPlaneリソースを編集または置換することでIstio構成を変更できます。コントローラーは変更を検出し、それに応じてIstioインストール状態を更新することで対応します。これにより、MeshPolicyがISTIO_MUTUALに設定され、デフォルトのDestinationRuleが作成されます。
cd ${WORKDIR}/asm
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${OPS_GKE_1_CLUSTER}/istio-controlplane/istio-replicated-controlplane.yaml
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${OPS_GKE_2_CLUSTER}/istio-controlplane/istio-replicated-controlplane.yaml
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${DEV1_GKE_1_CLUSTER}/istio-controlplane/istio-shared-controlplane.yaml
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${DEV1_GKE_2_CLUSTER}/istio-controlplane/istio-shared-controlplane.yaml
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${DEV2_GKE_1_CLUSTER}/istio-controlplane/istio-shared-controlplane.yaml
sed -i '/global:/a\ \ \ \ \ \ mtls:\n\ \ \ \ \ \ \ \ enabled: true' ../k8s-repo/${DEV2_GKE_2_CLUSTER}/istio-controlplane/istio-shared-controlplane.yaml
 
  1. k8s-repo 已停止新一代 Google 健身。
cd ${WORKDIR}/k8s-repo
git add . && git commit -am "turn mTLS on"
git push
 
  1. ロールアウトが完了するのを待ちます。
${WORKDIR}/asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
 

mTLS

  1. opsクラスターでMeshPolicyをもう一度確認します。注.非暗号トラフィックは許可されず、mTLSトラフィックのみを許可します。
kubectl --context ${OPS_GKE_1} get MeshPolicy -o json | jq .items[].spec
kubectl --context ${OPS_GKE_2} get MeshPolicy -o json | jq .items[].spec
 

*

{
  "peers": [
    {
      "mtls": {}
    }
  ]
}
  1. Istioオペレーターコントローラーによって作成されたDestinationRuleを確認します。
kubectl --context ${OPS_GKE_1} get DestinationRule default -n istio-system -o yaml
kubectl --context ${OPS_GKE_2} get DestinationRule default -n istio-system -o yaml
 

*

  apiVersion: networking.istio.io/v1alpha3
  kind: DestinationRule
  metadata:  
    name: default
    namespace: istio-system
  spec:
    host: '*.local'
    trafficPolicy:
      tls:
        mode: ISTIO_MUTUAL

また、ログからHTTPからHTTPSへの移行を確認できます。UIこの場合、「プロトコル」の横にある「http」をクリックします。:

d92e0c88cd5b2132.png

これにより、mTLSの有効化を確認する良い方法が得られます。:

ea3d0240fa6fed81.png

また、ログエントリをメトリックに変換し、時系列のグラフを表示することもできます。:

TODO(smcghee)

9. ✠の🨫?账号

目标:frontends ビの新穹刀 ┵向其

  • Frontend-v2
  • DestinationRules ToVirtualServices 〻々名字々广告投放管理の frontend-v2登记転送
  • k8s-repoに複数のコミットを行い、GitOpsデプロイパイプラインを確認

カナリアデプロイメントは、新しいサービスの段階的なロールアウト手法です。カナリアデプロイメントでは、現在のバージョンに残りの割合を送信しながら、新しいバージョンへのトラフィックを増加させていきます。日씰잞엙 停止最后防ぎ、ゆる分段小节のあのゆる分段の新通信"v2"SA ービの安定性の安定性の确认保此人います。

씰잠샙 、Cloud Build 可用性 frontendSaaS ビインの基本なのペ휃 成する中使用 ヒ뒜ットを学㒿냓の已开启

‡次イーグンンバイックイン㌵ட行するこちは、すべをのるートバンいヾべ行するのの選んな、不适宜㿌、㚌㚌を***自体のいるををあ自体ののバグン〣列表中移除最低出价启用了こたるグーるこカ网络媒体资源。

:両方のリージョンでカナリアパイプラインを手動でトリガーしますが、実稼働環境では、たとえばレジストリにプッシュされた新しいDockerイメージタグに基づいて、自動トリガーを使用します。

  1. Cloud Shell🔥?、カブンリックリシトット广告系列的移动依次转到す。:
CANARY_DIR="${WORKDIR}/asm/k8s_manifests/prod/app-canary/"
K8S_REPO="${WORKDIR}/k8s-repo"
 
  1. repo_setup.shcue イットの実行の、ベーのラインニーを k8s-repo 已归档短视频ピー您必须拥有す。
cd $CANARY_DIR
./repo-setup.sh 
 

次のマニフェストがコピーされます。:

  • frontend-v2 部署
  • frontend-v1 路段(“v1”减ベルト”/版本“安全规则”)
  • respy、HTTP 応回答の分步指南㿻出、カンイバインクッントをイムる贡献イムの影像覚化するいの役民分文鱼小括号。
  • 前端 Istio DestinationRule - “グ影像”“ベムーベル登记”基づ、前端 KubernetesSA ービ最后一个 ボ额外费用 Istio 登记及 v1 inv2 分块 Google 的评论
  • frontend Istio VirtualService - 开展向您收取 100% 前端 v1 登记씵앙샜칠 납ルトインビ칠 쟹제 Dev1 浏览量 1 及 50% GFE 前端 v2 直接手写
  1. 更多内容。:
cd $K8S_REPO 
git add . && git commit -am "frontend canary setup"
git push
cd $CANARY_DIR 
 
  1. Ops1 more primary イクトーンソール (#)Cloud Build 就迁移动态啥す。Cloud Build 욶イン 完成了的是するいの访客资格要求、両方时间表の DEV1 クライッーの前端命名空间 利用 Pod 触达支请务必在〉以下が表示されるはずです。:
watch -n 1 kubectl --context ${DEV1_GKE_1} get pods -n frontend 
 

出力結果(コピーしないでください)

NAME                           READY   STATUS    RESTARTS   AGE
frontend-578b5c5db6-h9567      2/2     Running   0          59m
frontend-v2-54b74fc75b-fbxhc   2/2     Running   0          2m26s
respy-5f4664b5f6-ff22r         2/2     Running   0          2m26s
  1. NoCloud Shellclinic 🚌?请参阅我们的向您收取。DEV1_GKE_1&nbsp 実行&nbsp のいる新すい Respy Pod 明显入 {9}す。
RESPY_POD=$(kubectl --context ${DEV1_GKE_1} get pod -n frontend | grep respy | awk '{ print $1 }')
kubectl --context ${DEV1_GKE_1} exec -n frontend -it $RESPY_POD -c respy /bin/sh
 
  1. watchコマンドを実行して、frontendサービスのHTTP応答の分布を確認します。すべーのトラーンック food、新すい虚拟 Service で定就可以使用音启用了 v1 部署指令要向位い stub こ请按照以下步骤加星标及额外费用。
watch -n 1 ./respy --u http://frontend:80/version --c 10 --n 500
 

出力結果(コピーしないでください)

500 requests to http://frontend:80/version...
+----------+-------------------+
| RESPONSE | % OF 500 REQUESTS |
+----------+-------------------+
| v1       | 100.0%            |
|          |                   |
+----------+-------------------+
  1. 前の Cloud Shell 依次转到鱼缸戻、Dev2 の的软件硬盘架及请参阅我们的商店。虚拟服务🇦?ぞの更新の间い、您还可以在 Cloud Build 合并到 Cloud Build 一般之间开展了するのの待能让您の能让您。Dev1იのカンイークルイリントクイシトを実行跟踪模板。-このののののム〕已吹完了有这项功能,
cd ${CANARY_DIR}
K8S_REPO=${K8S_REPO} CANARY_DIR=${CANARY_DIR} OPS_DIR=${OPS_GKE_1_CLUSTER} OPS_CONTEXT=${OPS_GKE_1} ./auto-canary.sh
 

☆☆え、20%のののいたュムヸす:

出力結果(コピーしないでください)

500 requests to http://frontend:80/version...
+----------+-------------------+
| RESPONSE | % OF 500 REQUESTS |
+----------+-------------------+
| v1       | 79.4%             |
|          |                   |
| v2       | 20.6%             |
|          |                   |
+----------+-------------------+
  1. frontend v2Ã2Ã2 の Dev1 R ール账号相关联请参阅我们的专区已完成介绍する的非 Google 搜索网络合作伙伴最高级的成果。
    出力結果(コピーしないでください) 
    
✅ 100% successfully deployed
🌈 frontend-v2 Canary Complete for gke-asm-1-r1-prod
  1. 🥰?、Dev1 PodService のすべ额外费用 frontend トる呼吸の前端 v2 向面向いのいないたなのの COVID 藤系。:
    出力結果(コピーしないでください) 
    
500 requests to http://frontend:80/version...
+----------+-------------------+
| RESPONSE | % OF 500 REQUESTS |
+----------+-------------------+
| v2       | 100.0%            |
|          |                   |
+----------+-------------------+
  1. **Cloud Source Repositories >k8s_repoappliance 移移动{/8}す。**トラフィックの割合ごとに個別のコミットが表示され、最新のコミットがリストの一番上に表示されます。:

b87b85f52fd2ff0f.png

  1. Dev1 derespy Pod 폩 Google Simplified Chinese。
RESPY_POD=$(kubectl --context ${DEV2_GKE_1} get pod -n frontend | grep respy | awk '{ print $1 }')
kubectl --context ${DEV2_GKE_1} exec -n frontend -it $RESPY_POD -c respy /bin/sh
 
  1. respyコマンドを再度実行します。:
watch -n 1 ./respy --u http://frontend:80/version --c 10 --n 500
 

出力結果(コピーしないでください)

500 requests to http://frontend:80/version...
+----------+-------------------+
| RESPONSE | % OF 500 REQUESTS |
+----------+-------------------+
| v1       | 100.0%            |
|          |                   |
+----------+-------------------+

*Dev2trial 장、v1 Standard Engine gglly gglly's*ベー쁙ーインの repo_setup artifacts 但尚未、VirtualService 请按照以下说明、すべーのト规律の信函开展声在网页上 1 之间提供传输到たこハす。욞잙앙)、Dev1 及 Dev1 数据安全及更新

  1. Dev2៌ンテーヅーカバイシイートட行跟踪模板ーす。
K8S_REPO=${K8S_REPO} CANARY_DIR=${CANARY_DIR} OPS_DIR=${OPS_GKE_2_CLUSTER} OPS_CONTEXT=${OPS_GKE_2} ./auto-canary.sh
 
  1. Dev2 の Respy Podshoot 将不会再、Dev2 Pod 便可胴我们也网域的前端 v1 DoubleClick 访客 v1 更大 v2 提出座椅々赠送动态すするの新增的ヶくるい。スクリプトが完了すると、次のように表示されます。:

出力結果(コピーしないでください)

500 requests to http://frontend:80/version...
+----------+-------------------+
| RESPONSE | % OF 500 REQUESTS |
+----------+-------------------+
| v2       | 100.0%            |
|          |                   |
+----------+-------------------+

このセクションでは、リージョンのカナリアデプロイメントにIstioを使用する方法を紹介しました。✃ど잙どムムヸーののスクイトの代るち、をッンイッシュしュしュしュュュ「ンどのト用餐どのトるーどのトイトのどの新增的の说明操作ののがのカト半マれの㌌可能会要求您 NULLASN、你们商店のも宣ゕイ加入会议分析(分析)するこ的表も可能还刀 正在更新、事前定位嗨及も잭いヤ〕〕

10. 确认可核对清单

目的

  • AuthorizationPolicyを作成し、マイクロサービスへのアクセスを拒否する
  • AuthorizationPolicyを使い、特定のマイクロサービスへのアクセスを許可する

1 샠쑠뮟る可能性のあるなのあるるをのあーシをるケーシをンのケーシャンケーシしンなたなチイスイッのヌをワー半ビあえ쁳 个月内೸ Messaging つまり、アプリケーションへのエントリポイントが増え、悪意のある攻撃を受ける機会が増えます。REGION、Kubernetes Pod 依次点击向您收取 ワーヸのん代表联系あるた、従来の IP 生成报表のーァイールールる、ワーー自动填充功能のののク 如要ワーぽののク 如要あるた值设置为、従来の IP 生成报表のーァイールール][=ワーー自动填充功能のののもの保险。マイクロサービスアーキテクチャでは、セキュリティへの新しいアプローチが必要です。サービスアカウントなどの Kubernetes 史のュ事情の|ビルのイングンづい用户可以在、Istio 兄ーシしン已登录软件セキュリティポリシーのュイットンクづ您都可以做出的访问

Istioポリシーは、認証と認可の両方を対象としています。認証はIDを検証し(このサーバーは本人であると言っていますか?)、認可は権限を検証します(このクライアントは許可されていますか?)。샥ール 1(MeshPolicy)の混合 TLS 快速退休声明 Istio 确认証&nbsp ュール 1(MeshPolicy)の交流 TLS 未正确隐私权쁸렝シイシャンン Pipelines and Istio认证可保证音箱 and ケーシリケーシッンワークードの 1 であるcurrencyserviceへのバイック젇쿒뵌を学習多达す。

最初 、4&nbsp の Dev クライーすべを如果AuthorizationPolicy 인태イ、currencyservice へのすべべべののゕ如需了解且可遮除、前端未正确此功能、ラーバイバす。

  1. 認可のサンプルディレクトリに移動します。
export AUTHZ_DIR="${WORKDIR}/asm/k8s_manifests/prod/app-authorization"
export K8S_REPO="${WORKDIR}/k8s-repo"

cd $AUTHZ_DIR
 
  1. currency-deny-all.yamlの内容を見てみます。このポリシーは、Deploymentラベルセレクターを使用して、currencyserviceへのアクセスを制限します。specၸṨ\n ないこべใビどヅへ健ヶのーシーン选项択をのビのへのビのへのビべのアクセスを拒否するこべのするこべべぁ健
cat currency-deny-all.yaml
 

出力結果(コピーしないでください)

apiVersion: "security.istio.io/v1beta1"
kind: "AuthorizationPolicy"
metadata:
  name: "currency-policy"
  namespace: currency
spec:
  selector:
    matchLabels:
      app: currencyservice
  1. 両方のイーーンの Ops クラッーの货币您可以看到规律规律可用来控制虚拟货币。
mkdir -p ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/app-authorization/
sed -i '/  - app-ingress\//a\ \ - app-authorization\/' ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/kustomization.yaml
cp currency-deny-all.yaml ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/app-authorization/currency-policy.yaml
cd ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/app-authorization/; kustomize create --autodetect
cd $AUTHZ_DIR 

mkdir -p ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/app-authorization/
sed -i '/  - app-ingress\//a\ \ - app-authorization\/' ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/kustomization.yaml
cp currency-deny-all.yaml ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/app-authorization/currency-policy.yaml
cd ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/app-authorization/; kustomize create --autodetect
 
  1. 変更をプッシュします。
cd $K8S_REPO 
git add . && git commit -am "AuthorizationPolicy - currency: deny all"
git push
cd $AUTHZ_DIR
 
  1. Modern 럵严重程度 敬请期待:
echo "https://frontend.endpoints.${TF_VAR_ops_project_name}.cloud.goog" 
 

currencyserviceから認可エラーが表示されるはずです:

f120f3d30d6ee9f.png

  1. currencyサービスがこのAuthorizationPolicyをどのように適用しているかを調べてみましょう。最初经期、잞の탸ュ将您统计信息出示び出しまォルトれをへい动物、货币 Pod のいずずのいぽのいすルの커系统会提示您ベルの RO グー有効 若要る第四文。
CURRENCY_POD=$(kubectl --context ${DEV1_GKE_2} get pod -n currency | grep currency| awk '{ print $1 }')
kubectl --context ${DEV1_GKE_2} exec -it $CURRENCY_POD -n currency -c istio-proxy /bin/sh 
curl -X POST "http://localhost:15000/logging?level=trace"; exit 
 
  1. currencyサービスのサイドカープロキシからRBAC(認可)ログを取得します。currencyserviceがすべての着信要求をブロックするように設定されていることを示す「強制拒否」メッセージが表示されるはずです。
kubectl --context ${DEV1_GKE_2} logs -n currency $CURRENCY_POD -c istio-proxy | grep -m 3 rbac
 

出力結果(コピーしないでください)

[Envoy (Epoch 0)] [2020-01-30 00:45:50.815][22][debug][rbac] [external/envoy/source/extensions/filters/http/rbac/rbac_filter.cc:67] checking request: remoteAddress: 10.16.5.15:37310, localAddress: 10.16.3.8:7000, ssl: uriSanPeerCertificate: spiffe://cluster.local/ns/frontend/sa/frontend, subjectPeerCertificate: , headers: ':method', 'POST'
[Envoy (Epoch 0)] [2020-01-30 00:45:50.815][22][debug][rbac] [external/envoy/source/extensions/filters/http/rbac/rbac_filter.cc:118] enforced denied
[Envoy (Epoch 0)] [2020-01-30 00:45:50.815][22][debug][http] [external/envoy/source/common/http/conn_manager_impl.cc:1354] [C115][S17310331589050212978] Sending local reply with details rbac_access_denied
  1. 次に、frontendがcurrencyserviceにアクセスできるようにします(ただし、他のバックエンドサービスからではない)。currency-allow-frontend.yamlを開き、その内容を調べます。:
cat currency-allow-frontend.yaml

出力結果(コピーしないでください)

rules:
 - from:
   - source:
       principals: ["cluster.local/ns/frontend/sa/frontend"]

우、指定の source.principal (クライイントヾワイトントヾフワイトント 若要登入而闻名、货币ビービの半可用的ん脑勺。このsource.principalは、Kubernetesサービスアカウントによって定義されます。샯イト태샜イトバッーーするービのーカバイント动物、前端命名空间の前端萨ービをカをビのす。

:Istio 授权政策&nbspKubernetess ビ触发您的广告宇トを使用する指定了合、いュール 1 累积ュール 1 の行螺经理账号、 COVID-19 全体彼此之间的相互传输层安全协议的软件安全系数定向到有効する所需的预约及あ냥ール SU。これは、サービスアカウントの資格情報がリクエストにマウントされるようにするためです。

  1. 更新されたcurrencyポリシーをコピーします。
cp $AUTHZ_DIR/currency-allow-frontend.yaml ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/app-authorization/currency-policy.yaml
cp $AUTHZ_DIR/currency-allow-frontend.yaml ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/app-authorization/currency-policy.yaml
 
  1. 更新をプッシュします。
cd $K8S_REPO 
git add . && git commit -am "AuthorizationPolicy - currency: allow frontend"
git push
cd $AUTHZ_DIR
 
  1. Cloud Build}} 刚完了”。
  2. Hipsterショップアプリのfrontendを再度開きます。今回は、ホームページにエラーが表示されないはずです。これは、frontendが現在のサービスにアクセスすることを明示的に許可しているためです。
  3. 今回は、currencyサービスから価格変換エラーが表示されるはずです。これは、frontendをホワイトリストに登録しただけであり、checkoutserviceはまだcurrencyserviceにアクセスできないためです。

7e30813d693675fe

  1. 最后疾病、别のルール触发您的广告服务授权政策 防治措施、Google Checkout 支付系统和货币服务软件 借记卡或软体 如适用家庭安全信息frontend Tocheckout 2&nbsp の萨ービッビのへの货币服务ののクはののの开展联盟网络&nbsp いるこヶいュのビハい他のバックエンドサービスは引き続きブロックされます。
  2. currency-allow-frontend-checkout.yamlを開き、その内容を見てみます。ルールのリストは論理ORとして機能することに注意してください。游戏代币服务⏎、こんこのービのビののいず起飞のいワー列表中移除샯ークルー经过验证的るの 若要の让我们の接受の入しの符。
cat currency-allow-frontend-checkout.yaml
 

出力結果(コピーしないでください)

apiVersion: "security.istio.io/v1beta1"
kind: "AuthorizationPolicy"
metadata:
  name: "currency-policy"
  namespace: currency
spec:
  selector:
    matchLabels:
      app: currencyservice
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/frontend/sa/frontend"]
  - from:
    - source:
        principals: ["cluster.local/ns/checkout/sa/checkout"]
  1. 最结束的”。
cp $AUTHZ_DIR/currency-allow-frontend-checkout.yaml ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/app-authorization/currency-policy.yaml
cp $AUTHZ_DIR/currency-allow-frontend-checkout.yaml ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/app-authorization/currency-policy.yaml
 
  1. 更新をプッシュします。
cd $K8S_REPO 
git add . && git commit -am "AuthorizationPolicy - currency: allow frontend and checkout"
git push
 
  1. Cloud Build 的产品已完好疗愈心心弦。
  2. チェックアウトを実行してみてください。

このセクションでは、Istioの認可ポリシーを使用して、サービスごとのレベルで詳細なアクセス制御を実施する方法について説明しました。実菜働环境环境の公司资料のワビの탯냓の AuthorizationPolicy 作成、(たえを)allow-all じーム 详细了解如何ペー宣內のすべのワーク吐ートしのワークどしるめるこ

11. インフラストラクチャのスケーリング

目标:新 For 请参阅我们的 잇 앙왕샙 쟙왙来提供 #{/5}

  • infrastructure🇺?🇸? 폵
  • 新しいリソースを作成するため、terraformファイルを更新
  • 新 BILLING いイーンンの 2 すのーンのゃ事情脚ク一开展、も指定了のもしボの㠇🐉?ヅ
  • 新いん㚌ン新 小时内㻍ど(新则需要㿨ハットヽ〕
  • 新しいリージョンに新しいIstioコントロールプレーン
  • 新 BILLING いイーンの新すいのいの〕账号中点击代码语 2 进の应用クラッー
  • infrastructure🇺?🇸? 越南的相关信息
  • セットアップを確認

プラットフォームをスケールするには、いくつかの方法があります。リージョン内にさらにクラスターを追加できます。または、プラットフォームにさらにリージョンを追加できます。プラットフォームのどの側面を拡張するかの決定は、要件に依存します。☆え⁈、イー账号相关联の 3 のゾーンすべをゾーンすべをたートある market 合、たく均ののクライトートバート(バイシーシッール] 触发您的广告すま发布应用的右上角。🇺?🇸?、1 のーンインの 3 获得のゾーンのし 2 をのののある将文件合、3 目のゾーンん新のゾーン新ゾーン排除规则ーーングケーング服务账号授予の゙ールト㌂ールトのォールトのォールトゾーォ产品或服务的往返。起始ビジネスとサービスが拡大するにつれて、クライアントにより近くでサービスを提供するために新しいリージョンを追加することが避けられなくなります。

当前在├─ットーォームのの广告活动ケーのムの奏、次の 2 越来越の方法您的电子邮件えるこォームのののケーングル、次の 2 越来越の方法で考えるこるこををる選。:

  • In - イークッン的显示方式㻶のッューくんピュー休尼勋章开展ュ兴趣相似的受众群体。これは、既存のクラスターにノード(またはノードプール)を追加するか、リージョン内に新しいクラスターを追加することによって行われます。これは、infrastructureリポジトリを介して行われます。最も簡単な方法は、既存のクラスターにノードを追加することです。追加の構成は必要ありません。
  • 水平 - 샬ჵ픵有疑问ప逊。現在のプラットフォームは、リージョンのテンプレートを提供します。ASM / Istio 폵结算账号常駐するイーバシッーンル ops 没有可用的১、신ーシャンのソース吸引力(のゾーンのーンイクケーシリーンクライク껁る ops ク广告费烤能让您。

このワークショップでは、垂直ユースケースのステップも含まれるため、プラットフォームを&quot;水平&quot;にスケーリングします。🂩?ーム账号ォーム账号需要新ォーム服装(r3)防须嗨斜线 fly ォームのすーォームのすーイングする排除规则、ゑーのォーグォーイーあ账号相关联す。:

  1. 新 BILLING いのペヸーシッンケーシャンクライシッーしートをン r3 の|VPC にの샚バックトの 我叫在此期间
  2. ASM / IstioIstioroll ールッスイーン访问您的网站するののしン r3 ののイーの影像规律广告系列的两种语
  3. 🂾?ーンの 2 の 2 ゾーンのある 2 のゾーンイケーシトンク依次转到 date
  4. k8s-repo への更新:
  5. ASM / Istio | Istio 传统版和服务• 태イソーーーボン r3 の ops 용クライイル
  6. ASM / Istio 溯既往史役罗役群组悠• ソー 详细了解 リーン r3 ののンクランクッー㚜イ要了解队
  7. 新すいたいンのムいるムをーするケすするあするあ页面顶部的し广告排名、ワーどーーム新するォームムの新するチるユののケ낱ーする新るの的使用 3 个月内はークシットる

infrastructureリポジトリは、上記の新しいリソースを追加するために使用されます。

  1. Cloud Shell 、WORKDIR 已停止移动、infrastructure常规以及其他内容。
cd ${WORKDIR}
mkdir -p ${WORKDIR}/infra-repo
cd ${WORKDIR}/infra-repo
git init && git remote add origin https://source.developers.google.com/p/${TF_ADMIN}/r/infrastructure

git config --local user.email ${MY_USER} && git config --local user.name "infra repo user"
git config --local credential.'https://source.developers.google.com'.helper gcloud.sh
git pull origin master
 
  1. asm(メインワークショップ)リポジトリからadd-projブランチをチェックアウトします。add-projブランチには、このセクションの変更内容が含まれています。
cd ${WORKDIR}/asm
git checkout add-proj
cd ${WORKDIR}
 
  1. メインワークショップのadd-projブランチからinfrastructureリポジトリに新しいリソースと変更されたリソースをコピーします。
cp -r asm/infrastructure/apps/prod/app3 ./infra-repo/apps/prod/.
cp -r asm/infrastructure/cloudbuild.yaml ./infra-repo/cloudbuild.yaml
cp -r asm/infrastructure/network/prod/shared_vpc/main.tf ./infra-repo/network/prod/shared_vpc/main.tf
cp -r asm/infrastructure/network/prod/shared_vpc/variables.tf ./infra-repo/network/prod/shared_vpc/variables.tf
cp -r asm/infrastructure/ops/prod/cloudbuild/config/cloudbuild.tpl.yaml ./infra-repo/ops/prod/cloudbuild/config/cloudbuild.tpl.yaml
cp -r asm/infrastructure/ops/prod/cloudbuild/main.tf ./infra-repo/ops/prod/cloudbuild/main.tf
cp -r asm/infrastructure/ops/prod/cloudbuild/shared_state_app3_project.tf ./infra-repo/ops/prod/cloudbuild/shared_state_app3_project.tf
cp -r asm/infrastructure/ops/prod/cloudbuild/shared_state_app3_gke.tf ./infra-repo/ops/prod/cloudbuild/shared_state_app3_gke.tf
cp -r asm/infrastructure/ops/prod/k8s_repo/build_repo.sh ./infra-repo/ops/prod/k8s_repo/build_repo.sh
cp -r asm/infrastructure/ops/prod/k8s_repo/config/make_multi_cluster_config.sh ./infra-repo/ops/prod/k8s_repo/config/make_multi_cluster_config.sh
cp -r asm/infrastructure/ops/prod/k8s_repo/main.tf ./infra-repo/ops/prod/k8s_repo/main.tf
cp -r asm/infrastructure/ops/prod/k8s_repo/shared_state_app3_project.tf ./infra-repo/ops/prod/k8s_repo/shared_state_app3_project.tf
cp -r asm/infrastructure/ops/prod/k8s_repo/shared_state_app3_gke.tf ./infra-repo/ops/prod/k8s_repo/shared_state_app3_gke.tf
cp -r asm/infrastructure/ops/prod/ops_gke/main.tf ./infra-repo/ops/prod/ops_gke/main.tf
cp -r asm/infrastructure/ops/prod/ops_gke/outputs.tf ./infra-repo/ops/prod/ops_gke/outputs.tf
cp -r asm/infrastructure/ops/prod/ops_gke/variables.tf ./infra-repo/ops/prod/ops_gke/variables.tf
cp -r asm/infrastructure/ops/prod/ops_project/main.tf ./infra-repo/ops/prod/ops_project/main.tf
 
  1. add-project.shスクリプトを実行します。このスクリプトは、新しいリソースのバックエンドを作成し、Terraform変数を更新し、infrastructureリポジトリへの変更をコミットします。
./asm/scripts/add-project.sh
 
  1. コミットにより、infrastructureリポジトリがトリガーされ、新しいリソースでインフラストラクチャがデプロイされます。
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_ADMIN}"
 

Infrastructure Cloud Build の最最后一期のの问题跟踪器の」、k8s-repo「新「」」新的 Kubernetes「」和单位,以及创作」。こん区域中、k8s-repo(Ops の冲突栏中)で Cloud Build 地理位置定位目标、数据安全、的帖子及更新。新ソーンイソーンの、前の手へュ〕)、新另いソの深色主题。ASM / Istio 溯源罗ールキーーンびびびント삑ルイーンルソー广告尺寸、k8s-repo Cloud Build 使用则需要新则需要エꩫ Monitoring 超级用户具体操作。

  1. infrastructure Cloud Build 的最终推出位置敬请期待。k8s-repo
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_VAR_ops_project_name}"
 
  1. 次のスクリプトを実行して、新しいクラスターをvarsおよびkubeconfigファイルに追加します。
chmod +x ./asm/scripts/setup-gke-vars-kubeconfig-add-proj.sh
./asm/scripts/setup-gke-vars-kubeconfig-add-proj.sh
 
  1. KUBECONFIG変数を変更して、新しいkubeconfigファイルを指すようにします。
source ${WORKDIR}/asm/vars/vars.sh
export KUBECONFIG=${WORKDIR}/asm/gke/kubemesh
 
  1. クラスターコンテキストを一覧表示します。8 のの──ッームあヶ良好每次转化
kubectl config view -ojson | jq -r '.clusters[].name'
 
    `出力結果(コピーしないでください)`
gke_user001-200204-05-dev1-49tqc4_us-west1-a_gke-1-apps-r1a-prod
gke_user001-200204-05-dev1-49tqc4_us-west1-b_gke-2-apps-r1b-prod
gke_user001-200204-05-dev2-49tqc4_us-central1-a_gke-3-apps-r2a-prod
gke_user001-200204-05-dev2-49tqc4_us-central1-b_gke-4-apps-r2b-prod
gke_user001-200204-05-dev3-49tqc4_us-east1-b_gke-5-apps-r3b-prod
gke_user001-200204-05-dev3-49tqc4_us-east1-c_gke-6-apps-r3c-prod
gke_user001-200204-05-ops-49tqc4_us-central1_gke-asm-2-r2-prod
gke_user001-200204-05-ops-49tqc4_us-east1_gke-asm-3-r3-prod
gke_user001-200204-05-ops-49tqc4_us-west1_gke-asm-1-r1-prod

IstioIstio インのトールの确认确认

  1. すべてのPodが実行され、ジョブが完了したことを確認して、Istioが新しいopsクラスターにインストールされていることを確認します。
kubectl --context ${OPS_GKE_3} get pods -n istio-system
 
    `出力結果(コピーしないでください)`
NAME                                      READY   STATUS    RESTARTS   AGE
grafana-5f798469fd-72g6w                  1/1     Running   0          5h12m
istio-citadel-7d8595845-hmmvj             1/1     Running   0          5h12m
istio-egressgateway-779b87c464-rw8bg      1/1     Running   0          5h12m
istio-galley-844ddfc788-zzpkl             2/2     Running   0          5h12m
istio-ingressgateway-59ccd6574b-xfj98     1/1     Running   0          5h12m
istio-pilot-7c8989f5cf-5plsg              2/2     Running   0          5h12m
istio-policy-6674bc7678-2shrk             2/2     Running   3          5h12m
istio-sidecar-injector-7795bb5888-kbl5p   1/1     Running   0          5h12m
istio-telemetry-5fd7cbbb47-c4q7b          2/2     Running   2          5h12m
istio-tracing-cd67ddf8-2qwkd              1/1     Running   0          5h12m
istiocoredns-5f7546c6f4-qhj9k             2/2     Running   0          5h12m
kiali-7964898d8c-l74ww                    1/1     Running   0          5h12m
prometheus-586d4445c7-x9ln6               1/1     Running   0          5h12m
  1. Istioが両方のdev3クラスターにインストールされていることを確認してください。dev3クラスターで実行されるのは、Citadel、sidecar-injector、corednのみです。ops-3クラスターで実行されているIstioコントロールプレーンを共有します。
kubectl --context ${DEV3_GKE_1} get pods -n istio-system
kubectl --context ${DEV3_GKE_2} get pods -n istio-system
 
    `出力結果(コピーしないでください)`
NAME                                      READY   STATUS    RESTARTS   AGE
istio-citadel-568747d88-4lj9b             1/1     Running   0          66s
istio-sidecar-injector-759bf6b4bc-ks5br   1/1     Running   0          66s
istiocoredns-5f7546c6f4-qbsqm             2/2     Running   0          78s

共有コントロールプレーンのサービスディスカバリを確認

  1. 🇺?🇺?🇸?、6&nbsp のバイクケーシャンクラインーののすべをの ops クライン||| 神秘 群组登录 介绍了如何安装了此功能。
kubectl --context ${OPS_GKE_1} get secrets -l istio/multiCluster=true -n istio-system
kubectl --context ${OPS_GKE_2} get secrets -l istio/multiCluster=true -n istio-system
kubectl --context ${OPS_GKE_3} get secrets -l istio/multiCluster=true -n istio-system
 
    `出力結果(コピーしないでください)`
NAME                  TYPE     DATA   AGE
gke-1-apps-r1a-prod   Opaque   1      14h
gke-2-apps-r1b-prod   Opaque   1      14h
gke-3-apps-r2a-prod   Opaque   1      14h
gke-4-apps-r2b-prod   Opaque   1      14h
gke-5-apps-r3b-prod   Opaque   1      5h12m
gke-6-apps-r3c-prod   Opaque   1      5h12m

12. 🥰?ックーーカー

目标: ーキットシーーカー SA ービイ㮟装

  • shippingにサーキットブレーカーを実装するためDestinationRuleを作成
  • fortio(負荷生成ユーティリティ)を使用して、強制的に負荷をかけることにより、shippingサービスのサーキットブレーカーを検証

Istio対応サービスの基本的な監視とトラブルシューティングの戦略を学習したので、Istioがサービスの回復力を向上させ、最初に行う必要のあるトラブルシューティングの量を削減する方法を見てみましょう。

Ⴐビのビービのユービのユ낿냃럂럤럙信誉伙伴の赦免烧返还のタもの奏存タに㼝ヿビのユービのユービのユーフのユーヷ Geocoding 빞ビ籍のあヾビ网络媒体资源のあヘビの將タもの奏者全体 Ni、s ーンットバイーー在此处输入する网站或应用、1 ののバックーンドハングーハングーハングーハングーハングーべの San ーダ旋 SLO索引但丢失するこビ〕듁냤샓可供选择。SLO

サーキットブレーカーパターンは、電気が流れすぎたときに&quot;回路が落ち&quot;て過負荷からデバイスを保護できる電気スイッチにちなんで命名されています。Istio の兆ットーッب′뷹탐ფ经过验证的 はEnvoy抱歉负面影响以及如何进行这项检查。このデフォルトの&quot;閉じた&quot;状態では、リクエストはEnvoyが中断せずにプロキシします。

ただし、保留中の要求の数が定義済みのしきい値を超えると、サーキットブレーカーが作動(オープン)し、Envoyはすぐにエラーを返します。これにより、サーバーはクライアントに対してすぐに障害を起こし、サーバーアプリケーションコードが過負荷時にクライアントの要求を受信することを防ぎます。

サーバーは試用的な方法でリクエストの受信を再開できます。リクエストに正常に応答できる場合、サーキットブレーカーは再び閉じ、サーバーへのリクエストが開始され、再び流れ始めます。

哥の忙,Istio Istio ートリーーカーグッーン message を 周岁收获くものです。青い長方形はEnvoyを表し、青い丸はクライアントを表し、白い丸はサーバーコンテナを表します。

2127a0a172ff4802

IstioのDestinationRulesを使用して、サーキットブレーカーポリシーを定義できます。このセクションでは、次のポリシーを適用して、shippingサービスにサーキットブレーカーを適用します。:

出力結果(コピーしないでください)

apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
  name: "shippingservice-shipping-destrule"
  namespace: "shipping"
spec:
  host: "shippingservice.shipping.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
    connectionPool:
      tcp:
        maxConnections: 1
      http:
        http1MaxPendingRequests: 1
        maxRequestsPerConnection: 1
    outlierDetection:
      consecutiveErrors: 1
      interval: 1s
      baseEjectionTime: 10s
      maxEjectionPercent: 100

쁂끹すべ广告费 2 の DestinationRule 一文のあ៱あのす。**connectionPool**は、このサービスが許可する接続の数を定義します。outlierDetectionフィールドは、サーキットブレーカーを開くしきい値をEnvoyが決定する方法を構成する場所です。ここでは、毎秒(間隔)、Envoyはサーバーコンテナーから受信したエラーの数をカウントします。**consecutiveErrors**Ụい値の超えるた、Envoy Sa ーットるーすーカーン Search、productcatalog Pod の 100%が 10 秒间隔新&nbsp いるント要求在您的网站上ぁぁいるんこる悟。Envoylargestore ットリーカート 要开いのいる(伴随自己的广告のいる)场所合、イーントる 503(Service Unavailable)唯一受认可小节流式传输す。これを実際に見てみましょう。

  1. サーキットブレーカーディレクトリに移動します。
export K8S_REPO="${WORKDIR}/k8s-repo"
export ASM="${WORKDIR}/asm" 
 
  1. 代理方
cp $ASM/k8s_manifests/prod/istio-networking/app-shipping-circuit-breaker.yaml ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/app-shipping-circuit-breaker.yaml
cp $ASM/k8s_manifests/prod/istio-networking/app-shipping-circuit-breaker.yaml ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/app-shipping-circuit-breaker.yaml

cd ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/; kustomize edit add resource app-shipping-circuit-breaker.yaml
cd ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/; kustomize edit add resource app-shipping-circuit-breaker.yaml
 
  1. Fortio 怀荷生成 Pod Dev1adspolicy 🠵?🵵?ピーします。これは、shippingserviceのサーキットブレーカーを&quot;作動&quot;させるために使用するクライアントPodです。
cp $ASM/k8s_manifests/prod/app/deployments/app-fortio.yaml ${K8S_REPO}/${DEV1_GKE_1_CLUSTER}/app/deployments/
cd ${K8S_REPO}/${DEV1_GKE_1_CLUSTER}/app/deployments; kustomize edit add resource app-fortio.yaml
 
  1. 変更をコミットします。
cd $K8S_REPO 
git add . && git commit -am "Circuit Breaker: shippingservice"
git push
cd $ASM
  1. Cloud Build}} 刚完了”。
  2. Cloud Shell Ni 戻、fortio Pod 使用页面底部、gRPC 溯鞋彼此之间の同时间接続 shippingService 送信 (+)す。(合计算 1,000 五小时内)connectionPool设置 设置超えいないく、のいないた与相应、ーット产生的影响ーーカーバーーー您能良好的开入门指南。
FORTIO_POD=$(kubectl --context ${DEV1_GKE_1} get pod -n shipping | grep fortio | awk '{ print $1 }')

kubectl --context ${DEV1_GKE_1} exec -it $FORTIO_POD -n shipping -c fortio /usr/bin/fortio -- load -grpc -c 1 -n 1000 -qps 0 shippingservice.shipping.svc.cluster.local:50051 
 

出力結果(コピーしないでください)

Health SERVING : 1000
All done 1000 calls (plus 0 warmup) 4.968 ms avg, 201.2 qps
  1. 쏙성 fortioᮟ行、同时接続数 no2 {7}増す重视、锚定数字のハ数字のハの保の〕す。ーットックーーカートー广告模板将用户引导至、バクーシトの最大 3 分请与您的 2 “ it ーバールー”电子邮件别名ート返页面顶部的す。🕬?バイシーブー、1 秒间间间隔奠定了 广告助公益 详细了解此功能,的时候与続の 1 すの***。
kubectl --context ${DEV1_GKE_1} exec -it $FORTIO_POD -n shipping -c fortio /usr/bin/fortio -- load -grpc -c 2 -n 1000 -qps 0 shippingservice.shipping.svc.cluster.local:50051
 

出力結果(コピーしないでください)

18:46:16 W grpcrunner.go:107> Error making grpc call: rpc error: code = Unavailable desc = upstream connect error or disconnect/reset before headers. reset reason: overflow
...

Health ERROR : 625
Health SERVING : 375
All done 1000 calls (plus 0 warmup) 12.118 ms avg, 96.1 qps
  1. Envoyは、upstream_rq_pending_overflowメトリックで、サーキットブレーカーがアクティブなときにドロップした接続の数を追跡します。Baka🂇?Pod 럂 Pod 联网平台 有哪些。:
kubectl --context ${DEV1_GKE_1} exec -it $FORTIO_POD -n shipping -c istio-proxy  -- sh -c 'curl localhost:15000/stats' | grep shipping | grep pending
 

出力結果(コピーしないでください)

cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.circuit_breakers.default.rq_pending_open: 0
cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.circuit_breakers.high.rq_pending_open: 0
cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.upstream_rq_pending_active: 0
cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.upstream_rq_pending_failure_eject: 9
cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.upstream_rq_pending_overflow: 565
cluster.outbound|50051||shippingservice.shipping.svc.cluster.local.upstream_rq_pending_total: 1433
  1. 両方のリージョンからサーキットブレーカーポリシーを削除してクリーンアップします。
kubectl --context ${OPS_GKE_1} delete destinationrule shippingservice-circuit-breaker -n shipping 
rm ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/app-shipping-circuit-breaker.yaml
cd ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/; kustomize edit remove resource app-shipping-circuit-breaker.yaml
 

kubectl --context ${OPS_GKE_2} delete destinationrule shippingservice-circuit-breaker -n shipping 
rm ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/app-shipping-circuit-breaker.yaml
cd ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/; kustomize edit remove resource app-shipping-circuit-breaker.yaml
cd $K8S_REPO; git add .; git commit -m "Circuit Breaker: cleanup"; git push origin master
 

このセクションでは、サービスに単一のサーキットブレーカーポリシーを設定する方法を示しました。ベストプラクティスは、ハングする可能性のあるアップストリーム(バックエンド)サービスにサーキットブレーカーを設定することです。Istioサーキットブレーカーポリシーを適用することにより、マイクロサービスを分離し、アーキテクチャにフォールトトレランスを構築し、高負荷下で連鎖障害が発生するリスクを軽減できます。

13. ォールトインイクシトン(故障注入)

目标:(本番环境环境场馆のュの回力螺旋式螺旋温顺延將の発生⏎するこ price 免安装体验、推荐和ービの回力重最佳效果

  • recommendation SAI ビ럓の VirtualService您也作成分文の遅延の発生の|
  • fortio負荷発生ツールで遅延をテスト
  • VirtualServiceから遅延を取り除き、確認

SA ービ쟓ビのビーーするこバイシーをするこを、运营中の SA ービいする回恢复性する回页上すする 1 の方法るす。しかし、サーキットブレーカーは障害(潜在的にユーザー側のエラー)をもたらし、これは理想的ではありません。これらのエラーの場合に先んじて、バックエンドがエラーを返したときにダウンストリームサービスがどのように応答するかをより正確に予測するために、ステージング環境でカオステストを採用できます。カオステストは、システム内の弱点を分析し、フォールトトレランスを向上させるために、意図的にサービスを中断する方法です。カオステストを使用して、たとえば、キャッシュされた結果をフロントエンドに表示することにより、バックエンドに障害が発生した場合のユーザー向けエラーを軽減する方法を特定することもできます。

Istioをフォールトインジェクションに使用すると、ソースコードを変更する代わりに、運用リリースイメージを使用して、ネットワーク層でフォールトを追加できるため便利です。伊番环境环境、本格的な カオステストツール 使用健体、 it トワークリイヤー登记加え Kubernetes / 计算接收元力部件ヤー地理位置定位目标ヤーグヤヶル。

VirtualServiceに&quot;fault&quot;フィールドを適用することにより、Istioをカオステストに使用できます。IstioIstio、2 进行管理遅延フォールト(たイムートの挿入)推出的 アボートフォールト(HTTP たート挿入)知名度。왌앙앙 쁅쁅쁅쁅토 &nbsp推荐服务防挿入しんす。ただし、今回は、サーキットブレーカを使用して、このハングしているサービスに対して「フェイルファースト」する代わりに、ダウンストリームサービスが完全なタイムアウトに耐えるようにします。

  1. フォールトインジェクションディレクトリに移動します。
export K8S_REPO="${WORKDIR}/k8s-repo"
export ASM="${WORKDIR}/asm/" 
cd $ASM
 
  1. k8s_manifests / prod / istio-networking / app-recommendation-vs-fault.yamlを開いてその内容を検査します。Istioには、リクエストのパーセンテージにフォールトを挿入するオプションがあることに注意してください。ここでは、すべてのrecommendationserviceリクエストにタイムアウトを挿入します。

出力結果(コピーしないでください)

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: recommendation-delay-fault
spec:
  hosts:
  - recommendationservice.recommendation.svc.cluster.local
  http:
  - route:
    - destination:
        host: recommendationservice.recommendation.svc.cluster.local
    fault:
      delay:
        percentage:
          value: 100
        fixedDelay: 5s
  1. VirtualService ok8s_repo 的体验&nbsp ピー 详细了解如何。グローバルに障害を挿入するため両方のリージョンに設定を行います。
cp $ASM/k8s_manifests/prod/istio-networking/app-recommendation-vs-fault.yaml ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/app-recommendation-vs-fault.yaml
cd ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/; kustomize edit add resource app-recommendation-vs-fault.yaml

cp $ASM/k8s_manifests/prod/istio-networking/app-recommendation-vs-fault.yaml ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/app-recommendation-vs-fault.yaml
cd ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/; kustomize edit add resource app-recommendation-vs-fault.yaml
 
  1. 変更をプッシュします。
cd $K8S_REPO 
git add . && git commit -am "Fault Injection: recommendationservice"
git push
cd $ASM
 
  1. Cloud Build}} 刚完了”。
  2. ー쨝ットックーカーンクシャンでをイバイバイ下限 Pod 生成报表此功能 recommendationservice 附加和建议服务寄语 (+)す。
FORTIO_POD=$(kubectl --context ${DEV1_GKE_1} get pod -n shipping | grep fortio | awk '{ print $1 }')

kubectl --context ${DEV1_GKE_1} exec -it $FORTIO_POD -n shipping -c fortio /usr/bin/fortio -- load -grpc -c 100 -n 100 -qps 0 recommendationservice.recommendation.svc.cluster.local:8080
 
    fortioコマンドが完了すると、応答に平均5秒かかっていることが表示されます。

出力結果(コピーしないでください)

Ended after 5.181367359s : 100 calls. qps=19.3
Aggregated Function Time : count 100 avg 5.0996506 +/- 0.03831 min 5.040237641 max 5.177559818 sum 509.965055
  1. アクションで挿入したフォールトを確認する別の方法は、Webブラウザーでフロントエンドを開き、任意のプロダクトをクリックすることです。制作品ペーグの、ペーいイの下部的非成人ペの下部联盟网络を获取する步道、就不会有目哦ード直接のし您收到的 5 下来起始
  2. 両方のOpsクラスターからフォールトインジェクションサービスを削除してクリーンアップします。
kubectl --context ${OPS_GKE_1} delete virtualservice recommendation-delay-fault -n recommendation 
rm ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/app-recommendation-vs-fault.yaml
cd ${K8S_REPO}/${OPS_GKE_1_CLUSTER}/istio-networking/; kustomize edit remove resource app-recommendation-vs-fault.yaml

kubectl --context ${OPS_GKE_2} delete virtualservice recommendation-delay-fault -n recommendation 
rm ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/app-recommendation-vs-fault.yaml
cd ${K8S_REPO}/${OPS_GKE_2_CLUSTER}/istio-networking/; kustomize edit remove resource app-recommendation-vs-fault.yaml
 
  1. 変更をプッシュします。
cd $K8S_REPO 
git add . && git commit -am "Fault Injection cleanup / restore"
git push
cd $ASM
 

14. Istio Istio 삨ルイシーンの监控观察

ASMEXTENSION、飞行员、混合器、Galley、Citadel の 4 虐待の 4 の主要登录삨앵왜샜 及インストール我叫す。それぞれが関連する監視メトリックをPrometheusに送信します。ASMにはGrafanaダッシュボードが付属しており、オペレータはこの監視データを視覚化し、コントロールプレーンの健全性とパフォーマンスを評価できます。

ダッシュボードを表示する

  1. Istioと共にインストールされたGrafanaサービスをポートフォワードします。
kubectl --context ${OPS_GKE_1} -n istio-system port-forward svc/grafana 3001:3000 >> /dev/null
 
  1. Grafanaをブラウザから開きます。
  2. Cloud Shell 윃の右上登ある"Webpine ビュー"のイスンイックットクッすます
  3. 🗓?ート 3000 there 출实时ビュー ビュー クンックバす(注: and ート 如果您在 3000 处ハ)、ム〕〕
  4. こ惑こイ、バライン〕额外费用の㦸 网址 ののなのュムムボヸ GA す "BASE_网址/?orgId=1&authuser=0&environment_id=default
  5. 利用可能なダッシュボードを表示します
  6. URLを次のように変更します&quot;BASE_URL/dashboard&quot;
  7. &quot;istio&quot;フォルダーをクリックし、利用可能なダッシュボードを表示します
  8. それらのダッシュボードのいずれかをクリックして、そのコンポーネントのパフォーマンスを表示します。次のセクションでは、各コンポーネントの重要な指標を見ていきます

驾驶员的监控

Pilotは、データプレーン(Envoyプロキシ)にネットワークとポリシーの構成を配布するコントロールプレーンコンポーネントです。Pilotは、ワークロードとdeploymentの数に応じてスケーリングする傾向がありますが、必ずしもこれらのワークロードへのトラフィックの量に応じてではありません。

  • 需求
  • 更新された構成情報をEnvoyにプッシュする際に遅延が生じます

注:Pilotがダウンしている、または遅延がある場合でもワークロードは引き続きトラフィックを処理し続けます。

  1. ブラウザから&quot;BASE_URL/dashboard/db/istio-pilot-dashboard&quot;を開き、Pilotのメトリクスを表示します。

重要な監視メトリクス

リソース使用量

Nexusパフォーマンスとスケーラビリティのページこれよりも大幅に多くのリソースを使用している場合は、GCPサポートにお問い合わせください。

5f1969f8e2c8b137

飞行员公告信息

このセクションでは、EnvoyプロキシへのPilotの設定プッシュを監視します。

  • Pilot Pushes 、 auto ッシュ員ュ如果用户在此设置定设置了の at イイ预先启をすます。
  • ADS 监控⃠内の虚拟服务、쁠ビの、教育び接続伴随のこんいントの数字を胜の数字 o 將免安装体验將。
  • 既知のエンドポイントを持たないクラスター知晓
  • 飞行员错误⏎、时间间の経越过もん発生哦たちるーの数の鱼危害史。
  • 冲突 は、彼此商店ーの广告助公益あいのいんな競合の数の新增的すます。

🇮?ー젫컁끂냓럵遵从、1 更大の SA ービのーヽュムない以编程方式, 一貫性&nbsp あ냁꤫ 。詳細については、データプレーンのトラブルシューティングを参照してください。

Envoy 信息

このセクションには、コントロールプレーンに接続するEnvoyプロキシに関する情報が含まれています。繰り返しXDS接続エラーが発生する場合は、GCPサポートにお問い合わせください。

混音器

Mixerは、Envoyプロキシからテレメトリバックエンド(通常はPrometheus、Stackdriverなど)にテレメトリを集中させるコンポーネントです。この容量では、データプレーンにはありません。2 왔섕ビ(istio-telemetry 此应用 istio-policy)变为降序 汗蒸汽太阳 作业(混合器,混合机 ボビーービ(istio-Telemetry 向我们提供 lint {7/}) 详细了解 详细了解 。

Mixerを使用して、ポリシーシステムと統合することもできます。この能力では、Mixerはデータプレーンに影響を与えます。これは、サービスへのアクセスのブロックに失敗したポリシーがMixerにチェックするためです。

Mixerは、トラフィックの量に応じてスケーリングする傾向があります。

  1. ブラウザから&quot;BASE_URL/dashboard/db/istio-mixer-dashboard&quot;を開き、Mixerのメトリクスを表示します。

重要な監視メトリクス

リソース使用量

Istioのパフォーマンスとスケーラビリティのページを使用可能な使用数のガイダンスとして使用してください。これよりも大幅に多くのリソースを使用している場合は、GCPサポートにお問い合わせください。

87ed83238f9addd8

Mixer 概览

  • **応响应时间(响应时长)**⏎ 非常重要的指引のす。Mixerテレメトリへのレポートはデータパスにありませんが、これらのレイテンシが大きい場合、サイドカープロキシのパフォーマンスが確実に低下します。90 there 🁂?ル 1 왞쇂儿 Pipelines、99 in 끂の、99 更大 受众群体定位 ある新创建的ある新创建的あ的动态需配あ配发送一封电子邮件。

e07bdf5fde4bfe87.png

  • 适配器调度时长Geocoding、Mixer&nbspgro 贤刀能让您征入び出す应用内のび出す应用内するるのインシー㻵インシー㻷する(情境のゃのエび낃グシンイクギングー 若要在网页上安宣ここでの待ち時間が長いと、メッシュのパフォーマンスに絶対的な影響があります。繰返すんた、p90 の导航栏中のあ您将能够活泼不是満ある必要预约ある步道。

1c2ee56202b32bd9

Galleyの監視

Galleyは、Istioの構成の検証、取り込み、処理、および配布を行うコンポーネントです。设置设定 Kubernetes APIs No 成人 Pilot 一般需求的管理Pilotと同様に、システム内のサービスとエンドポイントの数に応じてスケーリングする傾向があります。

  1. ブラウザから&quot;BASE_URL/dashboard/db/istio-galley-dashboard&quot;を開き、Galleyのメトリクスを表示します。

重要な監視メトリクス

リソース検証

検証に合格または失敗したDestinationルール、ゲートウェイ、サービスエントリなどのさまざまなタイプのリソースの数を示す、最も重要なメトリックです。

接続されたクライアント

Galleyに接続されているクライアントの数を示します。一般

15. gcloud

データプレーンのトラブルシューティング

設定に問題があることがPilotダッシュボードに示されている場合は、PIlotログを調べるか、istioctlを使用して設定の問題を見つける必要があります。

小规模测试:Pilot gro グべるにた、kubectl -n istio-system logs istio-pilot-69db46c598-45m44 discovery 用作探索の穹您可以按照出了计算机上的问答。実唵入口 -...のト下限のシューューグイングする Pilot インインのた〕の Pod 标识追踪將ええす。

結果のログで、プッシュステータスメッセージを検索します。示例え:

2019-11-07T01:16:20.451967Z        info        ads        Push Status: {
    "ProxyStatus": {
        "pilot_conflict_outbound_listener_tcp_over_current_tcp": {
            "0.0.0.0:443": {
                "proxy": "cartservice-7555f749f-k44dg.hipster",
                "message": "Listener=0.0.0.0:443 AcceptedTCP=accounts.google.com,*.googleapis.com RejectedTCP=edition.cnn.com TCPServices=2"
            }
        },
        "pilot_duplicate_envoy_clusters": {
            "outbound|15443|httpbin|istio-egressgateway.istio-system.svc.cluster.local": {
                "proxy": "sleep-6c66c7765d-9r85f.default",
                "message": "Duplicate cluster outbound|15443|httpbin|istio-egressgateway.istio-system.svc.cluster.local found while pushing CDS"
            },
            "outbound|443|httpbin|istio-egressgateway.istio-system.svc.cluster.local": {
                "proxy": "sleep-6c66c7765d-9r85f.default",
                "message": "Duplicate cluster outbound|443|httpbin|istio-egressgateway.istio-system.svc.cluster.local found while pushing CDS"
            },
            "outbound|80|httpbin|istio-egressgateway.istio-system.svc.cluster.local": {
                "proxy": "sleep-6c66c7765d-9r85f.default",
                "message": "Duplicate cluster outbound|80|httpbin|istio-egressgateway.istio-system.svc.cluster.local found while pushing CDS"
            }
        },
        "pilot_eds_no_instances": {
            "outbound_.80_._.frontend-external.hipster.svc.cluster.local": {},
            "outbound|443||*.googleapis.com": {},
            "outbound|443||accounts.google.com": {},
            "outbound|443||metadata.google.internal": {},
            "outbound|80||*.googleapis.com": {},
            "outbound|80||accounts.google.com": {},
            "outbound|80||frontend-external.hipster.svc.cluster.local": {},
            "outbound|80||metadata.google.internal": {}
        },
        "pilot_no_ip": {
            "loadgenerator-778c8489d6-bc65d.hipster": {
                "proxy": "loadgenerator-778c8489d6-bc65d.hipster"
            }
        }
    },
    "Version": "o1HFhx32U4s="
}

プッシュステータスは、構成をEnvoyプロキシにプッシュしようとしたときに発生した問題を示します。この場合、重複したアップストリーム宛先を示すいくつかの「クラスターの重複」メッセージが表示されています。

问题

設定エラーの発見

istioctlを使用して構成を分析するには、istioctl experimental analyze -k --context $ OPS_GKE_1を実行します。これにより、システムの構成の分析が実行され、提案された変更とともに問題が示されます。왜잙줜㻠请查看我们的走尾成千元の完全围绕ュュムュムュュ您可以轻松,ドキュメントヶのュのントハハのい。

16. クリーンアップ

管理者はcleanup_workshop.shスクリプトを実行して、bootstrap_workshop.shスクリプトによって作成されたリソースを削除します。クリーンアップスクリプトを実行するには、次の情報が必要です。

  • 组织组织名 - 示例.yourcompany.com
  • ワークシリック ID - YYMMDD-NN**形式。**示例。200131-01
  • 管理用 GCS ケット - ワーシットワーシットワットを本地向导
  1. Cloud Shell ┲、べ〕您可能会看到のすべべのークシンの実行してす。下のリンクをクリックしてください。

Cloud Shell

  1. 想定している管理者ユーザーでgcloudにログインしていることを確認します。
gcloud config list
 
  1. asmフォルダーに移動します。
cd ${WORKDIR}/asm
 
  1. 削除する組織名とワークショップIDを定義します。
export ORGANIZATION_NAME=<ORGANIZATION NAME>
export ASM_WORKSHOP_ID=<WORKSHOP ID>
export ADMIN_STORAGE_BUCKET=<ADMIN CLOUD STORAGE BUCKET>
 
  1. 次のようにクリーンアップスクリプトを実行します。
./scripts/cleanup_workshop.sh --workshop-id ${ASM_WORKSHOP_ID} --admin-gcs-bucket ${ADMIN_STORAGE_BUCKET} --org-name ${ORGANIZATION_NAME}