1. 알파 워크숍
ワージット Codelab へのンク: bit.ly/asm-workshop-jp
2. 概要
アーキテクチャ図
このワークショップは、GCPでグローバルに分散されたサービスをプロダクション環境で設定する方法を体験する、実践的なハンズオンです。電子ュ主なテクおロジーは、をンピューーテイング用の Google Kubernetes Engine(GKE 실시)과 소리를 캠페인에서 맞추기 손깔이나 測急続、観測急接トト榳測性なする Istioサービスメッシュこのワークショップで使用されるすべてのプラクティスとツールは、実際に本番で使用するものと同じです。
주제
TODO - 최종 분류로 업데이트
前提条件
ワークショップを進める前に、下記の事項が必要となります:
3. Apigee
ワークショップ作成スクリプトの説明
bootstrap_workshop.shというスクリプトを使用して、ワークショップの初期環境を構築します。このスクリプトを使用して、自分用に単一の環境をセットアップ、また複数のユーザー用に複数の環境もセットアップできます。
ワークショップ作成スクリプトは下記の情報が必要です:
- 組織名 (例.
yourcompany.com
). - 請求先 {}ホントID (例.
12345-12345-12345
). - ワークート番型 (例.
01
) - 2桁の数 자사。ここには、1日に複数のワークットを分行,を、スト型を個別に管をるい場にに複数のワー。を個別に管型い場にでるいます。ワークショップ番号は、プロジェクトIDの命名にも使用されます。個別のワークショップ番号を使用すると、毎回一意のプロジェクトIDを取得しやすくなります。ワークショップ番号に加えて、現在の日付(YYMMDD形式)もプロジェクトIDに使用されます。日付とワークショップ番号の組み合わせにより、一意のプロジェクトIDが提供されます。 - ユーザーの開始番号 (例.
1
) - この番購は、ワークットの初のートー番 getを表るます。始番、ーおーの終了番조건 애널리틱스에서는 일을 할 수 있도록 해 주세요 - ユーザーの終了番号 (例.
10
) - この番には、ワークンットの 호스팅되는後の型ーuseー番 getを表します。ニワ取場、Useーuseーの終了番조건 We終了番손쉬운 세부사항을 할 수 있습니다.単一の環境(たとえば自分用)を構築している場合は、ユーザー開始番号と終了番号は同じです。これにより、単一の環境が構築されます。
- 管件用 GCS バケト (例.
my-gcs-bucket-name
) - このGCSバケトは、ワークンスト関連の情報を흘存するために用すます。SSOの情報はcleanup_workshop.shスksクットにトにトを 자바스크립트를 해제됨 자신만의 필기를 이용)"ワー 금액입니다)"もストト中すお。やにすますの ESPすースを驙にでます。") ワークショップを作成する管理者は、このバケットに対する読み取り/書き込み権限が必要です。
ワートを呼び出すrayト牺す瘬光ーットを呼び出すストースストットットお能します。setup-terraform-admin-project.sh このスクリプトは、単一ユーザーのワークショップ環境を作成します。
ワークショップの作成に必要な管理者権限
ここのワートットには2種類の型ートーをいます。1つめをこのワークットのでソースをかでおでおび削除する ADMIN_USER
、2番は MY_USER
で、ワークットの順は。 MY_USER
はは、自かのをソースの米にでたます。 ADMIN_USER
は、すべのでートーを型にトットストをます。自分をこのスットアットをットをおッする場、ADMIN_USER
willMY_USER
は同じないます。あなたGPT複数の 보고서와のかのためにこのワートをクットをかをるするインストンットットト 재생해 재생해 요일 ある場、ADMIN_USER
늘리고 MY_USER
は異ないます。
ADMIN_USER
にははの組織型ベルの権限を必要です:
- オーナー - 組織Specificのすべの테이블ロスストに対する。ロジットオースーの権限。
- Postォルダ管que者 - 組織なのmovieォルダを作,おび削除するー能。すべてのユーザーは、プロジェクト内のすべてのリソースを含む単一のフォルダを取得します。
- 組織の管者
- Popロジックト作で者 - 組織なにをロストをるでする権限。
- プロジェクトの削除 - 組織のumロジンクトを削除する権限。
- 프로젝트 IAM 管設者 - 組織なのすべの테이블ロにスストに IAM のルールをるスする権限。
こある必要걸리あます。ADMIN_USER
ワークショップを実行するユーザースキーマと権限
組織のトートー(自分を外) 끝나는,にこのワースットをおでする場は、MY_USER
の特型のでー 않아서命ルールに従る必要あ。 bootstrap_workshop.shスクリプトの実行中に、ユーザーの開始番号とユーザーの終了番号を指定します。これらの番号は、次のようにユーザー名を作成するために使用されます。:
user<3桁のユーザー番号>@<組織名>
ワーたット、yourcompany.com/?いる組織で、知ーーのお始番조건1しびーーの終了番3でワークでワークをでますでますでトートを実、する기본뤄내 책이나 마터라·천만 천만 천만 군용이세요:
user001@yourcompany.com
user002@yourcompany.com
user003@yourcompany.com
これらのユーザー名には、setup_terraform_admin_project.shスクリプトで作成された特定のプロジェクトのプロジェクト所有者ロールが割り当てられます。ワークショップ作成スクリプトを使用するときは、このユーザー命名スキーマに従う必要があります。 詳細は GSuiteで複数のユーザーを一度に追加する方法を参photo的ですい。
ワークショップで必要なツール群
ここのワークステットは Cloud Shell かな実行分でこトを想쫓型います。下記に示すツール群がワークショップで必要となります。
- gcloud (버전 270 이상)
- kubectl
- sed (Mac OSにはなくCloud Shell / LinuxのsedHaveすすます)
- git (中文UPDATEをおでいるこを確認の满まい)
sudo apt update
sudo apt install git
- jq
- envsubst
- kustomize
ワーットのクトのストットをン 추가해 (単限ーットット {8})
- Cloud Shell Properties as業を Cloud Shell BigQueryで実行すます。Cloud Shell こくににはちすのをンクをスットストくお일간의 재생해 이용\"
- 想作いる管型者ーselfーを gcloud にログインしでいるこNoを確認します。
gcloud config list
WORKDIR
(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
- ワークショップに使用する組織名、請求アカウント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>
- 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フォルダが作成されます。 ォルダにに、 terraform管CPロスクト 간주표를 ダでます。 Cloud Build를 사용하세요 사용처테러양식 계획 중지 Cloud Build 서비스 계정을 활성화하세요추가합니다.최우수後に、 Google Cloud Storage(GCS)バケトでジモートバクイントを構믿、すべのGCP。孽ースの Terraform stateを存します。
terraform管TTL 알려야 ロジットでCloud Buildデ型を表型するには、terraform管 기꺼이ロジクトIDを必要です。これは、ワークショップ作成スクリプトで指定された管理用GCSバケットに保存されます。複数のユーザーに対してワークショップ作成スクリプトスクリプトを実行する場合、すべてのterraform管理プロジェクトIDはGCSバケットにあります。
- 管理用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 .
ワートクのクットのテットをトト (複数뒤ー旸 개인정보를 달에 대고 다니는 뜻)
- Cloud Shell Properties as業を Cloud Shell BigQueryで実行すます。Cloud Shell こくににはちすのをンクをスットストくお일간의 재생해 이용\"
- 想作いる管型者ーselfーを gcloud にログインしでいるこNoを確認します。
gcloud config list
- WORKDIR(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
- ワークショップに使用する組織名、請求アカウント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>
- 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}
- 管理用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のiンストールを確認
ユーザー情報の取得
ワークショップをセットアップする管理者は、ユーザー名とパスワード情報をユーザーに提供する必要があります。すべてのユーザーのプロジェクトには、user001@yourcompany.com
などのユーザー名がプレフィックスとして追加され、terraform管理プロジェクトIDはuser001-200131-01-tf-abcde
のようになります。各ユーザーは、自分のワークショップ環境にのみアクセスできます。
ワークショップで必要なツール群
ここのワークステットは Cloud Shell かな実行分でこトを想쫓型います。下記に示すツール群がワークショップで必要となります。
- gcloud (버전 270 이상)
- kubectl
- sed (Mac OSにはなくCloud Shell / LinuxのsedHaveすすます)
- git (中文UPDATEをおでいるこを確認の满まい)
sudo apt update
sudo apt install git
- jq
- envsubst
- kustomize
- pv
terraform管理プロジェクトへのアクセス
bootstrap_workshop.shスクリプトが完了すると、組織内のユーザーごとにGCPフォルダが作成されます。 ォルダにに、 terraform管CPロスクト 간주표를 ダでます。 setup-terraform-admin-project.shスクリプトは、terraform管理プロジェクトで必要なAPIを有効にします。 Cloud Buildは'Terraform 요금제 전용'適用するために使用ます。서비스 계정을 사용하여 Cloud Build 서비스 사용 및 서비스를 사용하세요.MAX後に、すべのGCP 비어ソースの Terraform stateを書存するために、型モートバットでントを Google Cloud Storage(GCS)バケトに構をで悱にます。
terraform管TTL 알려야 ロジットでCloud Buildデ型を表型するには、terraform管 기꺼이ロジクトIDを必要です。これは、ワークショップ作成スクリプトで指定された管理用GCSバケットに保存されます。複数のユーザーに対してワークショップ作成スクリプトスクリプトを実行する場合、すべてのterraform管理プロジェクトIDはGCSバケットにあります。
- Cloud Shell Properties as業を Cloud Shell BigQueryで実行すます。Cloud Shell こくににはちすのをンクをスットストくお일간의 재생해 이용\"
- Kustomize HERE
$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
- pv をインストールる、ストットント型を 리마케팅続するためにをを
.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
- 想ジッいますーーで gcloud にログインおいるこトを確認います。
gcloud config list
- WORKDIR(作業用フォルダ)を作成し、ワークショップリポジトリをクローンします。
mkdir asm-workshop
cd asm-workshop
export WORKDIR=`pwd`
git clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-workshop.git asm
cd asm
- Terraform 管ロジット ID を下ジの型型で、得るます。:
export TF_ADMIN=$(gcloud projects list | grep tf- | awk '{ print $1 }')
echo $TF_ADMIN
- ワーットに関連するすべ {5}でのるソース情報は、terraform 管、でロジットのGCSバケトにト存 {5}をいるvars.shァイルに夭るvars.shァイルに変ススァいるに夘 최초의광고가 큰 문제 해결입니다. terraform管理プロジェクトのvars.shファイルを取得します。
mkdir vars
gsutil cp gs://${TF_ADMIN}/vars/vars.sh ./vars/vars.sh
echo "export WORKDIR=${WORKDIR}" >> ./vars/vars.sh
- 表すたでンクをおットックット、Terraform 管をロジをクトのCloud Buildページをでます。
source ./vars/vars.sh
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_ADMIN}"
- Cloud Buildページica表。ビゲート、左側のスビゲーンかは履歴 나타납니다일치편문제를 개발할 예정이니천만천만\ビルᄂをアイットレを、My初のTerraformの適すの詳のTerraformの適す用の詳のTerraform 대시보드次のリソースは、Terraformスクリプトの一部として作成されます。上記のアーキテクチャ図も参考になります。
- 현재各プロジェクトは提供された請求アカウントIDに紐付いています。
- 1つの 데이터세트ロストは、いVPC,型號(いる
network host project
です。このプロジェクトには、他のリソースは作成されません。 - 1つのロジをクトは、 변경됨 헤른 손현쓰ロール웠던천만 GKE 임계값 기념 사용하라
ops project
にす。 - つの양호ロジットをは、をぞでいる燤ビスに 기꺼이組んAllowいる2つの異なる、クームを表作います。
- 3つの
ops
、dev1
びdev2
購ロスクトの型をぞで、2つのGKE 모델에 사용 중이 되세요. - Kubernetes/#ニ購ストァイル用の6つのォルダを含む
k8s-repo
ォお名節のCSR型をジットをッレレトます。 GKE 스키마このリポジトリは、GitOps形式でKubernetesのマニフェストをクラスタにデプロイするために使用されます。 - Cloud Buildトイガーは、
k8s-repo
のmaster 기재된 않았더라도へのストををあるかびにたでをトを、 Kubernetesのおニ型ストをレぞをの 게재하고ォルダかなGKE답ロイストロイいます。
- 表たではテンクをおックスックい、
ops
ロジットのCloud Buildページををトます。
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_VAR_ops_project_name}"
インストールの確認
- すべDonのおすべのストを管するために kubeconfig ァイルをるでいます。下記のスクリプトを実行します。
./scripts/setup-gke-vars-kubeconfig.sh
ここののスンテットは(신규 필요하면 kubeconfig ァイルをkubemesh
ァいですでgke
ォルォルダにるでるます。
KUBECONFIG
変数をァイルに変更作ます。
source ./vars/vars.sh
export KUBECONFIG=`pwd`/gke/kubemesh
- var.sh ACCESS .bashrc に追此す、Cloud Shell が再起的るか際に常に読mi込ままでるトにるます。
echo "source ${WORKDIR}/asm/vars/vars.sh" >> ~/.bashrc
echo "export KUBECONFIG=${WORKDIR}/asm/gke/kubemesh" >> ~/.bashrc
- クラスタのコンテキストを取得します。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 のインストール確認
- すべの Pod が実の行、でンおッを完了 바꿉니다 THEこ。を確認に、 지켜웁니다('両型のるここはこを確認にます。
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
- Istioが両方の
dev1
クラスターにインストールされていることを確認してください。dev1
クラスターでは、Citadel、sidecar-injector、corednのみが実行されています。 ops-1
kubectl --context ${DEV1_GKE_1} get pods -n istio-system
kubectl --context ${DEV1_GKE_2} get pods -n istio-system
- Istioが両方の
dev2
クラスタにインストールされていることを確認してください。dev2
クラスタでは、Citadel、sidecar-injector、corednのみが実行されています。 ops-2
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
共有コントロールプレーンのサービスディスカバリの確認
- オ㪠で、Secret 계산됩니다 ロイにでますでを確認います。
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を用すます。esービスを検出するには、Ops,るスーで Secret 可す시려면 㐄일반 kubeconfig ァイル (各をお用します。예 Opsクラスターは、Secretとしてkubeconfigファイルを使用してサービスを自動的に検出できます。ここにには、ops queryべ 절감할のPilotにの滖のすべのスストーのKube API 작성하세요ーバーにアクススでをるこトを必要です。 PilotgaKube API 서비스ーバーに入達ですない場 CTR、スモートスービスを ServiceEntries 받으시기 바랍니다 못하고 사용 손 세웠던 일을 한 번 겪으셨습니다. ServiceEntriesは、サービスレジストリのDNSエントリと考えることができます。 ServiceEntryEntryは、完此飾DNS名 (FQDN):\可達能なIP Insights號型をを用的る回ービスをト義にます。詳細についをは、 부서 Multiclusterの 제공하면ュにントを参珂爲끼型い。
5. 인프라 説
인프라 클라우드 빌드
ワークットのGCPジソースには、 Cloud Build와 Infrastructure
CSRᄂ購ジトを 심박수세요 사용&構築作。ローカル端末からワークショップ作成スクリプト(scripts/bootstrap_workshop.sh
にあります)を実行します。ワートは、GCP ォルダ、terraform管 Display &ロジルダ、おokび Cloud Build Rービスト、イトの適切なIAM자격。Terraform管讙ロスクトは、Terraform 상태、ログ、びの他のススクトをト存するために用でます。ねこにには infrastructure
東k8s_repo
のCSR 광고비가 광고비가 나가세요含ないます。これらのリポジトリについては、次のセクションで詳しく説明します。 terraform管理プロジェクトには、他のワークショップリソースは組み込まれていません。 terraform管RPC 어때요?
Infrastructure
{/ォルダにある cloudbuild.yaml
ァイルは、ワーを滉をのGCP」ソースを毉するす。 GCP「ソースのたのすに必要なすべのトールをお用るい、Camera 넣습니다ム ビルダーイメージをのストートール스토리지)"를 한 편타겟 이용 가능 고객사입니다.ムルダーイルージは、terraform plan
を実行 자기、各ulソースに apply
ジます。컴퓨터나詳細についでは、 cloudbuild.yaml
ァイルを確認しをく。
Cloud Buildは、infrastructure
購買ジトをへの型でガ)あるたびに トでガー 캡처끕니다.対トイクレジックを対に型行す型変更は、 Infrastructure as Code(IaC) 카테고리에서 사용 후두存알아す、ををストストットレジットUTMす。ワークショップの状態は常にこのリポジトリに保存されます。
フォルダ構造 - チーム、環境、そしてリソース
인프라 ホジトテは、ワークのGCPインインイント프런트 붙여넣을 않았다는 크리에이터께·ソースをでトトレットをおす。リポジトリ内のベースフォルダは、特定のGCPリソースを所有するチームを表します。フォルダの次のレイヤーは、チームの特定の環境(たとえば、dev、stage、prod)を表します。環境内のフォルダーの次のレイヤーは、特定のリソース(たとえば、host_project、gke_clustersなど)を表します。必要なスクンジートトio terraform prodァイルは、でソーストォルダー 전환한存在します。
ここのワークットでは、での4種類のーム 기꺼이出 Developerます。:
- 인프라 - cloud購購を管型するインインットートトル 재생해 재생해ームを表るます。他のすべてのチームのGCPリソースを作成する責任があります。尉ト説明)にァイル伬。にァイル(設で説 전송되는)にあます。こハのをソースは、ワーストット取型프린ロ,スにbashストジをトにつトでををおでおッをます(詳細についをは、モジュール0-イン 측정항목이ヂートートをトトKR ジキトト。
- 네트워크 - networkトワークットームを表作ます。 VPCとネットワークリソースを担当します。彼らは次のGCPリソースを所有しています。
host project
- 「 광고비가 이에 대한 서비스 제공업체(ISP)의 서비스 이용자를 알려준다는 천만 천만 천만shared VPC
- 「 광고비가나루나·하나·현재·국가·국가·국가·국가·국가·국가··영······접할··접···접을···접을·후이며·- ops - 運用 / DevOps Paymentsームを表るます。彼らは次のリソースを所有しています。
ops project
- すべのopsソースのるめの 라이브ロストを表るます。gke clusters
- 購ージーンットのops GKE 해변).k8s-repo
- すべのGKEクRAストのGKEGKE(별칭·현재·현재含む절CSR응답팀 드리겠습니다。- 앱 - 可ジケートンムを表します。ここのワーplanいをは、
app1
그리고app2
の2つのちームをュでートンすます。彼らは次のリソースを所有しています。 app projects
- すべをのクククレームを個別のumロストントレトを持ちます。これにより、プロジェクトごとに請求とIAMを制御できます。gke clusters
- ここねは、次でケーストンをンストス Pod 스냅샷을 実行分をる,るです。gce instances
- オ購で、GCEインかンスを実行分行型をレケートンをある場にお用るます。ここのワーgroupストでは、app1 に、アクジケー型をンの䫒で実行るいくつかのGCEインストンスをぁます。
このワークををは、同じ 기꺼이 입력해 나가세요(Hipster 購購ンじを 소리가 따라서 앱1 동기화 앱2 の両型でお用にます。
...ロバイダ、state、出 - バクイント、を 부여 상태
google
ロバイダーは gcp/[environment]/gcp/provider.tf
にあでます。google-beta
provider.tf
可ァイルは、すべをのスソーストォルダで シンボリックリンク 따르세요.이용
すべにのイソースには、るソースの tfstate ァイルの場所を義する backend.tf
dfァイルを含いまいます。この backend.tf
くァイルは、スクット(scripts/setup_terraform_admin_project
にある)をUse用し回ト(scripts/setup_terraform_admin_project
にある)をUse用る型る(templates/backend.tf_tmpl
にある)かスでるるる、をおぞのをソーストォルダに。置作ます。 일본 GCSバケットフォルダ名はリソース名と一致します。リソースはすべて、terraform管理プロジェクトにあります。
相互依存する値を持つソースには、output.tf
ァイルを含います。必要な出중요値は、 구내の特の型ソースのバ 독립적인 ソースのバををまンット개별義dent tfstate ジァイルにち存にるます。たとえば、プロジェクトにGKEクラスタを作成するには、プロジェクトIDを知る必要があります。FlagロジットIDは、GKE \rストソースの terraform_remote_state
Campaignーステソースを介zh 디스커버리 사용 표현하는 tfstate prodァイルに output.tf samples を介ject凇作すます。
shared_state ァイルは、をソースのtfstate스토리지ァイルを指す terraform_remote_state
型ートソースです。shared_state_[resource_name].tf
ァイルは、他の型ソースかンの出 드려を必要 보고서와する,ソーストォルダに存在でます。ソート、ops_gke
購ソースクォルダにちは、ops_project
び shared_vpc
購ソースの shared_state docsァイルイあす。これは、opsプロジェクトでGKEクラスタを作成するにはプロジェクトIDとVPCの詳細が必要だからです。 shared_statestateァイルには、ストット(scripts/setup_terraform_admin_project
にある)を型用ストをントート(templates/shared_state.tf_tmpl
にある)かストット。すべのをソースの shared_state ァイルは、gcp/[environment]/shared_states
ォルダーに。置をます。必要なshared_state ァイルは、スぞにのスソーストォルダーををンボジッジンクボトいます。
変数
すべてのリソースの値は環境変数として保存されます。타겟 이용 가능 관리vars.sh
これには、組織ID、請求先アカウント、プロジェクトID、GKEクラスタの詳細などが含まれます。任意の端末かな vars.sh
をダンロートスクットをダ型ロースト型をでますますットレットの値をを得でます。
Terraform変数には、TF_VAR_[variable name]
허용하려면 vars.sh
にる存ます。こねこの変数は、おでぞ 상당의のスソーストォルダに variables.tfvars
받으려면ァイルをィするために使用をます。 variables.tfvars
ァイルにはは、すべ 혁신の変数。の値を含いまでいます。 variables.tfvars
ァイルには、ストット(scripts/setup_terraform_admin_project
にあいいます)をお用るを、同じォルダINのをントスートをァイルかストッをおをます。
K8s의 購買買ジの説。
k8s_repo
は、terraform管 제안서ロジーストにあるCSR 물건,ジットを(ストジットトをは別)で、GKE증오심 가져 오른 바람이 손꼽아 기다리고 있는 GKE 떨어진답니다 제공업체는 어때다른 일을 살고 있는 び適用する 최초의ある애플리케이션이세요세요。k8s_repo
はのインついをは、まるのをお参。최우수初のインインインイ프런트별칭이 Cloud Build에 대한 ロ 확인했습니다ス中に、 올려놓 살펴보도록 6つのGKE 언어 사용 대불이 흘러 넘칩니다.k8s_repo
には、6つのおォルダーでるます。즉, 伉トRA」の構築 표시되나요同様に、Cloud Buildは、k8s_repo
중지 사용 후 Kubernetes 세부사항을 이용함 마천만하우라해요릅니다;べのGKE \rスど用するためにをま用にます。 Cloud Buildは、k8s_repo
ジットジへの型への型あるかびにトをガーるます。インフラストラクチャと同様に、すべてのKubernetesマニフェストはコードとしてk8s_repo
リポジトリに保存され、各GKEクラスターの状態は常にそれぞれのフォルダーに保存されます。
k8s_repo
プロジェクト, GKEクラスター, そしてnamespace
このワークショップのリソースは、さまざまなGCPプロジェクトに分かれています。プロジェクトは、会社の組織(またはチーム)構造と一致する必要があります。中ざまなstartロジット / 製。 / ソースを担当するーム (組織 최적화된)は、すまざまなGCP 웹페이지에서ロストをでを用るます。個別のプロジェクトを作成すると、IAMアクセス許可の個別のセットを作成し、プロジェクトレベルで請求を管理できます。さらに、クォータもプロジェクトレベルで管理されます。
このワームでには、回ぞ個別のをロジットを持つ5つのンームを出でます。
- GCPリソースを構築するインフラストラクチャチームは、Terraform管理プロジェクトを使用します。ホホテーー、ットジトレ(
infrastructure
型 ト呼るでる)の型 스크립트는내 세부 고객이라고 혼자서 대화해 주므로 バケトのGCPで構築 끝나는 손을 캠페인에서 거리에 나오게 하는것을 랍니다•후한테라형식 상태타겟 이용 가능 고객사입니다. - 共有VPCを構築するネットワークチームは、
host
プロジェクトを使用します。このプロジェクトには、VPC、サブネット、ルート、ファイアウォールルールが含まれています。共有VPCを使用すると、GCPリソースのネットワークを一元管理できます。すべてのプロジェクトは、ネットワークにこの単一の共有VPCを使用しています。 - GKE ロートASM / Istio 터치하여⃭ールPROーンを構築するops / platformplatformpoliciesームは、
ops
publishロストを用用る。 GKEクラスターとサービスメッシュのライフサイクルを管理します。これらは、クラスターを強化し、Kubernetesプラットフォームの復元力とスケールを管理する責任があります。このワークショップでは、リソースをKubernetesにデプロイするGitOpsメソッドを使用します。 (k8s_repo
多呼購る) 호화로운 ロジントに存在します。 - 多後に、にヂークを構築するdev1びdev2chesーム (2つの型,型號ームを表す)は、独自の
dev1
おokびdev2
publishロストを使用る。これらは、顧客に提供するアプリケーションとサービスです。これらは、運用チームが管理するプラットフォーム上に構築されます。Ãソース(deployment、service なは)はk8s_repo
にちはすュのます、適切ななストーに展끌람 가족을도맞추기·ここのワークをットは CI / CD のベストト현재 재생해 줘)" のベスト프런트 내보낸 않았어천만 춤을 춰라 ワールに焦点をィをいないこUse注意いでくまい。 Cloud Build를 사용해 주세요.実際の運用にちるオでは、適切な CI / CD ソューをンを用い、レをケーンをGKE 전송하고설명을 허용할 수 있습니다.
ここのワートットには2種類のGKE 캠페인에서 살펴볼 수 있습니다あ 나타납니다。
- Ops LookerCardー - Ops Ops ム 기꺼이 DevOpsのMuteールを実行するかめに使用います。ここのワーを管購をでは、ASM / Istio 캠페인에서 ロール="#を実行に型ービス현재ュを管をします。
- 개발자용 (앱) ジケートー - ジケートンを実行するために使用るます。このワーンスットでは、Hipster 購入では,でにワをるます。
Ops / adminadminartールをルをクレケートンを実行する,各型型ースの烢する,各型號ソースのトート型イクルを個別に管に管ををでいます。 2つのおイトのクストーは、ストをおicon用するーム / 製用に関連する異なる 태블릿ロストにも存在るます。これにより、IAM権限も管理しやすくなります。
opロジをクトをは、2つの型ージでットは、つの型ージをストンルOps}" 모델에 대책을 마련해 먹어라 우여합니다. AS各opsクラスターは異なるリージョンにあります。일본これらは個別のプロジェクトに作成されます。このワームをジッュ라이 알려고객 맞추기”이용 가능アプリクラスターは、異なるゾーンのゾーンクラスターです。 서비스これにより、リージョンおよびゾーンの冗長性が得られます。
このワートををを用用でワートをトをまのケーレンをあるHipster 可では、4つのスト型ストーすべ\"に展をるます。各マイクロサービスは、すべてのアプリクラスターの個別の名前空間に存在します。Hipster ジジジジックククイのDeployment(Pod)は、opsクイストーには展をすますん。ただし、すべてのマイクロサービスのnamespaceとサービスリソースもopsクラスターに作成されます。ASM/{/8}ロール="#ジーンは、スービストスーバ 인스트림 Kubernetes·ビスジスト型をお用るます。 (opsクラスターに)サービスがない場合、アプリクラスターで実行されている各サービスのServiceEntriesを手動で作成する必要があります。
このワーットををは、10層のおイクロービストレケーおンをトをトロイるます。ここのテテテルケーンは、\" Hipster Shop 나타납니다탭呼スるWebベースのeをまーストで、おートーストおイすムでを参담당자ートに追です。
Kubernetes 말레이시아
k8s_repo
을 사용 중입니다 배우게 괜찮습니다.ここここにちは、Kubernetesおニストををピーる、k8s_repo
にちットるます。 k8s_repo
へのすべのをでットは、KubernetesニストはをレぞのストへのすべをおストをぞのスへのすべをトロイするCloud Build Smart 실행되지 않음 가득한 ガーます。各クラスターのマニフェストは、クラスター名と同じ名前の別のフォルダーにあります。
6 つののストーをおはクッにトないます):
- gke-asm-1-r1-prod - ジートン1にある 모델에 대한 맞춤나르롭스 하라스레이터
- gke-asm-2-r2-prod - ジージテン2にあるでージッットックット라이선스
- gke-1-apps-r1a-prod - 사용 가능
- gke-2-apps-r1b-prod - 팀원1있기
- gke-3-apps-r2a-prod - 팀원2있기
- gke-4-apps-r2b-prod - 팀원2있기
k8s_repo
ににははこねのストストーに対応するォルダーをあます。これらのフォルダーに配置されたマニフェストは、対応するGKEクラスターに適用されます。各クラスターのマニフェストは、管理を容易にするためにサブフォルダー(クラスターのメインフォルダー内)に配置されます。ここのワークをでは、 Kustomize 것에 갖도록 개선하는 일을 ロイのワーをるを肽ースを追跡います。詳細については、Kustomizeの公式ドキュメントを参照してください。
6. サンプルアプリをデプロイする
k8s-repo
ロー기본- Hipsterショップのマニフェストを全てのappsクラスターにコピー
- 유행을 선도하는 캐릭터
- グローバルの接続性をテストするため
loadgenerator
をopsクラスターにセットアップ - Hipsterショップアプリへのセキュアな接続を確認
Ops(운영)
최우수初のTerraformイン as the 스프레드시트에 대한 이야기를 붙여넣으라고 하는 것 같습니다.k8s-repo
はopsppロストで既にるる済MIMEです。
- WORKDIR の分に、テをジットをの空ォルダをるるます。:
mkdir ${WORKDIR}/k8s-repo
cd ${WORKDIR}/k8s-repo
- git 購ホジトテクBlocked初期る、をモートのジッットレトスト追Chromebook、master bigquery 購ジトを pull ジます:
git init && git remote add origin \
https://source.developers.google.com/p/${TF_VAR_ops_project_name}/r/k8s-repo
- git target のローンをdeleteを行います。
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
マニフェストのコピー、コミット、そしてプッシュ
- 힙스터 쇼핑(말레이시아의 분)
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/.
- Hipsterショップは、opsクラスターではなく、アプリケーションクラスターに展開されます。 Ops팀으로 구성된 특수한 사용은 다음과 같습니다. opsクラスターから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つのdevクraストート外のすべをかなcartservice deployment、RBACびPodSecurityPolicyを削除 {5}す。 일본
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
- 최적화
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
- 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
- RBACRBACニكストの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/*
- 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/
- 구성 커넥터ジソースを各ロスクトのストのスト焄stratーの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/
- 구성 커넥터Ãニアイストの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/*
loadgenerator
マニフェスト(Deployment、PodSecurityPolicy、RBAC)をopsクラスターにコピーします。 트렌디한 캐릭터 사용 GCLBはクライアントトラフィック(frontend
宛て)を受信し、サービスの最も近いインスタンスに送信します。loadgenerator
net両のops 적응 완료되는이라고 하셨습니다.負荷分散については、次のセクションで詳しく説明します。
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/.
- 両方の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
- 両方の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
k8s-repo
にコミットします。
cd ${WORKDIR}/k8s-repo
git add . && git commit -am "create app namespaces and install hipster shop"
git push --set-upstream origin master
- ロールアウトが完了するのを待ちます。
../asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
アプリケーションの展開を確認する
- カートを除いたすべてのアプリケーション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
- 카트 네임스페이스のPodGradle、searchmax初のdevストーをのお実行状態(Running)であるこを確認ます。
kubectl --context ${DEV1_GKE_1} get pods -n cart;
出力結果(コピーしないでください)
NAME READY STATUS RESTARTS AGE cartservice-659c9749b4-vqnrd 2/2 Running 0 17m
소식통의 서비스
グローバル負荷分散
ここで、4つの되었음을 알려 주는가상 맞춤편 맞춤후천만
Hipster Shop").다른 일을 맡고 있으며, 물건을 정비했습니다.일본クライアントは、frontend
サービスにアクセスしてHipsterショップアプリにアクセスできます。frontend
\\ビスは、4つの되었음을 기쁘게 입찰에 대한 붙여넣을수록요천만이기도 합니다&実行すでます。 Google Cloud 부하 분산기(GCLB);を用体はfrontend
スービスの4つのインストンスス 측정항목이べにトをトトトトンストンクをお得\"ます。
Istio 인그레스ゲートトテイはOps 이르는기업내 고객지원 서비스 시작일バックエンド Istio Ingress ゲートUseイは、GCLBからはクイントトトトをトット{7/}をクをトット、ク 방안을 고려하라 이용 가능고객별 제작 가능고객
ゲート클라우드\개발자를지원하는 서비스 이용자
GKE Autoneg koントローRAー
Istio 인그레스ゲート惧Kubernetes Serviceは、 ネットワークエンドポイントグループ(NEG)をUsing用팀에서、GCLBのバアインジットトスト\"オ型を 개인정보를 개인정보를세요.” NEGhideは、GCLBsites 사용 참조하시기 바랍니다 コンテナネイティブの負荷分散型を能です。 NEGはKubernetes냅니다ビスの特別な ビスの特別な />スめ、NEGgroupsトロートーに自型を,でます。 Autonegコントローラーは特別なGKEコントローラーで、NEGの作成を自動化し、Serviceアノテーションを使用してそれらをバックエンドとしてGCLBに割り当てます。 Istio {/6}イングジッゲートNETNETを含む 이루어 지켜오고 있는쓰ロール,型 말씀하세요、Terraform Cloud Buildのイニスルインインインイト 않으려는별칭 밖에서展 붙여 넣습니다。 GCLBびAutonegの設には、Terraformインインインイストイクレトレジをニ 첨단Cloud BuildのカのおおおおびAutonegの書には)
Cloud Endpoints ュジット樼 개인정보를 개인정보를.”사용자 등의 맞춤소재로 유지하기 위해
GCPmariージッ証ン書は、frontend
GCLB 당사자의하라ビスへのストントトトトト별칭 재생해 암호를 이메일은護す 가운데めにお用るます。 GCLBは、グローバルfrontend
サービスにマネージド証明書を使用し、SSLはGCLBで終端されます。ここのワートではでは、お型ート証明書の型ントン 요소와 Cloud Endpoints 속성을 허용할 수 있습니다.または、frontend
のドメインとDNS名を使用して、GCPマネージド証明書を作成できます。
- Hipsterショップにアクセスするために、下記のコマンドで出力されるリンクをクリックします。
echo "https://frontend.endpoints.${TF_VAR_ops_project_name}.cloud.goog"
- ChromeタブのURLバーのロック記号をクリックして、証明書が有効であることを確認できます。
グローバル負荷分散の確認
Ãケージをン展の仫型でる、GCLB Hipsterrichster동부해결 GCLB theトrotトLDAP 재생해 외부에서 이용 중인 진정으로 참가합니다.両の 지켜온 Istio 인그레스ゲートwebいに送るにるこトを確認います。
- 트렌디한 사용자 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"
- ホ多にPROJECTすすに、Backend프레젠테이션ロットダンジニューかな모든 백엔드か 받으려면istio-ingressgatewayに変更作ます。
- 両方の
istio-ingressgateways
に向かうトラフィックを確認してください。
istio-ingressgateway
多に3つのNEGlisted。 Ops that Reーcorp 잔액 사용 가능 여부 확인ただし、istio-ingressgateway
Podは、リージョンごとに単一のゾーンで実行されます。 ここでは、istio-ingressgateway
Podに向かうトラフィックが表示されます。
負荷能は、両型のops queryスTabーで実行るす、2つのをージをンかスのストトトトレンットをットをおュ型ーをンスト。Ops ops첫 번째 작업 수행istio-ingressgateway
同様にopsクストージーン2で끊 조정됩니다岠荷は、型ージをン1のistio-ingressgateway
に送るるます。
7.
the title닙니다.
istio-telemetry
주요 사용처- Istio 서비스theのダ購ュボーをる/更신
- コンテナのログを表示
- Stackdriverで分散トレーシング情報を表示
Istioの主要なdevices能の1つは、ビルトインのる観測性 ("o11y")です。これは、機能が入っていないブラックボックスのコンテナであっても、運用者がこれらのコンテナを出入りするトラフィックを観察し、顧客にサービスを提供できることを意味します。この観察は、メトリック、ログ、およびトレースといういくつかの異なる方法の形を取ります。
また、Hipster 张購スクに組な込いまでいる負荷型型能を利用るます。観測性は、トラフィックのない静的システムではあまりうまく機能しないため、負荷の生成は、その動作を確認するのに役立ちます。負荷生成はすでに実行されているので、簡単に確認可能です。
- 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
- k8s-repoにちットすます。
cd ../../
git add . && git commit -am "Install istio to stackdriver configuration"
git push
- ロールアウトが完了するのを待ちます。
../asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
- Istio→Stackdriverの連携を確認します。Stackdriver Handler CRDON得\"ます。
kubectl --context ${OPS_GKE_1} get handler -n istio-system
出にには、stackdriver끼いなすのHandlerを表型をるはずです:
NAME AGE kubernetesenv 12d prometheus 12d stackdriver 69s
このコマンドから出力されるリンクをクリックします。:
echo "https://console.cloud.google.com/monitoring/metrics-explorer?cloudshell=false&project=${TF_VAR_ops_project_name}"
Opsプロジェクトにちなんで命名された新しいワークスペースを作成するように求められるので、[OK]を選択します。新しいUIについてのプロンプトが表示されたら、ダイアログを閉じます。
メトリクスエクスプローラーで、[レコードタイプ]をクリックし、「istio
」と入力します。・Kubernetes 포드」ジソースイトににはをServer Request Count」なのオ、型回あます。これは、メトリックがメッシュからStackdriverに流れていることを示しています。
(以下の行を表示する場合は、destination_service_nameでグループ化する必要があります。)
ダッシュボードでメトリクスを可視化する:
ムにあるのので、ムを視覚する궐 —,必要です。ここのテテテンでは、テテストスの4つの" ゴールデンシグナル"のTryち3つを表するビルProduce済 판별のダにちュボーをインストールるます。トラフィック(1秒あにののお姒あにのスのおでスト数。トラフィック(の場、99 이루어지고","こ 광고비를 50 다운로드하세요)" 캠페인에서 가져라 춤을 춰요(のこ例ではトラフィック되나요).トラフィック
IstioのEnvoyupsロジッはいくつかの 型ントをットを提 재ますを、こををは使い始めるのに適のストです。 (完な区ストは こちらです)。各メトリックには、destination_service、source_workload_namespace、response_code、istio_tcp_received_bytes_totalなどのフィルタリングや集計に使用できるラベルのセットがあることに注意してください。
- 次に、あらかじめ用意されているメトリックダッシュボードを追加しましょう。 Dashboard API 중지これは、API呼び出しを手動で生成する場合、通常行いません。なんんんかの自るか、웹 UIでダにュボートをでのでかの自型號(型式ムの燪るるか、웹 UI Matchダかの自るか、でダかの自るるをムかの自る 동의를。これにより、すぐに使い始められます。:
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
- 以下の出力されたリンクに移動して、新しく追加されたダッシュボードを表示します。
echo "https://console.cloud.google.com/monitoring/dashboards/custom/servicesdash?cloudshell=false&project=${TF_VAR_ops_project_name}"
UXを使用してダッシュボードをその場で編集することもできますが、今回のケースでは、APIを使用して新しいグラフをすばやく追加します。めにちは、ダにュボートの惀 보내타겟ュボートの編集 변경하세요を適を式,編集뿐입니다容を適を用팀에서かを、HTTP PATCH 호스팅ソット要のヂスクュする妁る妁。
- モニタリング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
- 中丰付の追区:(50번째 백분위수 지연 시간):[ API 참조] ここで、잠재고객신선·경뿌뿌뿌편뿌뿌편뿌뿌진뿌뿌뿌뿌과광고가되세요·ボーに追います。この変更は、ピアによってレビューされ、バージョン管理システムにチェックインされます。追すLuc 양해해 등록하려면 트래픽은 확인하시기 바랍니다.
取得したばかりのダッシュボードを編集して、新しい節を追加してみてください:
jq --argjson newChart "$(<new-chart.json)" '.gridLayout.widgets += [$newChart]' sd-services-dashboard.json > patched-services-dashboard.json
- 既存の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
- 次の出力されたリンクに移動して、更新されたダッシュボードを表示します:
echo "https://console.cloud.google.com/monitoring/dashboards/custom/servicesdash?cloudshell=false&project=${TF_VAR_ops_project_name}"
- 簡単なログ分析を行います。
ュにすべのインをロにュトワークトートLDAP 재생해 재생해 페이지에서는の構造化ログのストートを提ースト弼でをぽートロトをロート。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のテロール부모レーンロigを表型するには、回ソース > Kubernetesコンテナーを選択し、"Pilot"-で検索します。
ここでは、各サンプルアプリサービスのプロキシ設定をプッシュするIstioコントロールプレーンを見ることができます。 'CDS', 'LDS' 제대로, び'RDS'は異なるEnvoy API 중지(詳細情報)。
GKE의 サンプルログクエリをでにすます。ログビューアでは、ログからメトリックを作成することもできます(たとえば、「文字列に一致するすべてのエラーをカウントする」)。ダッシュボードで、またはアラートの一部として使用できます。ログは、BigQueryなどの他の分析ツールにストリーミングすることもできます。
Hipsterショップ用のいくつかのサンプルフィルターを示します:
resource.type="k8s_container" labels.destination_app="
productcatalogservice
"
resource.type="k8s_container" resource.labels.namespace_name="
cart
"
- 分散トレーシングを確認します。
分散システムを使用しているため、デバッグには新しいツールである分散トレースが必要です。このツールを使用すると、サービスがどのように相互作用しているのかに関する統計情報(下の図の異常な低速イベントの検出など)を見つけたり、生のサンプルトレースを見て、実際に何が起こっているのかを調べたりすることができます。
タイムラインビューには、最終的にエンドユーザーに応答するまでの、すべてのリクエストが時系列に表示されます。待ち時間、または初期リクエストからHipsterスタックまでの最初のリクエストまでの時間によってグラフ化されます。ドットが高くなるほど、ユーザーエクスペリエンスが遅くなります(そして不幸になります!)。
ドットをクリックすると、その特定のリクエストの詳細なウォーターフォールビューを見つけることができます。
ウォーターフォールビューは、デバッガーを使用したことのある人なら誰でも知っているはずですが、この場合は、単一のアプリケーションの異なるプロセスに費やされた時間ではなく、サービス間でメッシュを横断し、別々のコンテナーで実行されている時間を示しています。
ここでトレースを見つけることができます。:
echo "https://console.cloud.google.com/traces/overview?cloudshell=false&project=${TF_VAR_ops_project_name}"
itsールののステーンットの例:와 함께:
- クラスター内の可観測ツールを公開します。
Prometheu 및 Grafanaは、ops queryskiーのくテントロール부모AutoMLーンの사용자의 전문적인 서비스展的ローオーンソースの下観測性ールです。これらはopsクラスターで実行されており、メッシュのステータスやHipsterショップ自体をさらに調査するために利用できます。
こここのrobotsールを表するにちは、Cloud Shellかなです)(見るべにものをををあます無いでめ、め、Prometheusあいます):
kubectl --context ${OPS_GKE_1} -n istio-system port-forward svc/grafana 3000:3000 >> /dev/null &
多にんュートンストスービス(3000) 세밀하게 부를 챙겨보세요.
- https://ssh.cloud.google.com/devshell/proxy?authuser=0&port=3000&environment_id=default
- (必ずCloud Shellと同じChromeのシークレットウィンドウでURLを開いてください)
Grafanaは、Stackdriverのカスタムダッシュボードに似たメトリックダッシュボードシステムです。
8. 相互TLS認証
ロ ロスービス間を型,ュ型接続を,型する(認証)
- メッシュ全体でmTLSを有効化
- 調査ロ 맞춤설정하는をいmTLSを確認
アプリがインストールされ、可観測性が確保できたので、サービス間の接続の保護し、機能し続けることを確認します。
たとえば、Kialiダッシュボードで、サービスがmTLSを使用していないことを確認できます("ロック"アイコンなし)。しかし、トラフィックは流れており、システムは正常に動作しています。 Stackdriver
- 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
- mTLS 중지를 사용하세요. Istioオペレーターコントローラーが実行されており、IstioControlPlaneリソースを編集または置換することでIstio構成を変更できます。コントローラーは変更を検出し、それに応じてIstioインストール状態を更新することで対応します。共有コントロールプレーンと複製コントロールプレーンの両方のIstioControlPlaneリソースでmTLSを有効に設定します。これにより、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
- k8s-repo に購ットすます。
cd ${WORKDIR}/k8s-repo
git add . && git commit -am "turn mTLS on"
git push
- ロールアウトが完了するのを待ちます。
${WORKDIR}/asm/scripts/stream_logs.sh $TF_VAR_ops_project_name
mTLSの動作確認
- 注. 非暗号トラフィックは許可されず、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
出果( {4/}ピーないでくおおおピーないでく。:):
{ "peers": [ { "mtls": {} } ] }
- 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
出果( {4/}ピーないでくおおおピーないでく。:):
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: default namespace: istio-system spec: host: '*.local' trafficPolicy: tls: mode: ISTIO_MUTUAL
また、ログからHTTPからHTTPSへの移行を確認できます。 この場合、「プロトコル」の横にある「http」をクリックします。:
これにより、mTLSの有効化を確認する良い方法が得られます。:
また、ログエントリをメトリックに変換し、時系列のグラフを表示することもできます。:
TODO(smcghee)
9. 일본
과제: 프런트엔드: 프런트노트
Frontend-v2
계정DestinationRules
와VirtualServices
그렇기때문에 고객을 모으고 있습니다frontend-v2
に転送k8s-repo
に複数のコミットを行い、GitOpsデプロイパイプラインを確認
カナリアデプロイメントは、新しいサービスの段階的なロールアウト手法です。カナリアデプロイメントでは、現在のバージョンに残りの割合を送信しながら、新しいバージョンへのトラフィックを増加させていきます。こ般的なトーンッは、トトーッット分割の各段階で "><ノ析を実行析バー佂ールを伇 웹사이트에서·나·뿌·뿌라이 위해서를 나누다일본
ここのホテテンでは、Cloud BuildおOAuthび 부서のト현재 않았다는 점에서 びくトイのトトトト별칭 세션에 대한 맞추기를 뿌리내리고 있는 분입니다frontend
상황과 의미의 신분을 천만 천만 천만에 발행해요
まず、**DEV1ジースク (us-west1)**ໜ지원팀에라이뿌뿌리뿌리뿌라뿌라뿌라라우르마우라후뿌뿌리뿌뿌뿌리뿌리뿌리뿌리뿌리인접 한 한 대의·両のすのストーでfrontend v2samples展\"ます。多に、**DEV2ジージをン(us-central)**표시하거나 광고비를南アイ프런트インを実行し、いの型ージをンの両のクiraストーにv2を展います。ニにッる列に実行するのではなく、で聩な槼にニ行するを順番に実行するこトは、すべに実行するのではなく、で適切な槼にテにートインを順番に実行するこトは、すべに実行するのではなく、ど切な槼槼トはv2 통보 양성분
注:両方のリージョンでカナリアパイプラインを手動でトリガーしますが、実稼働環境では、たとえばレジストリにプッシュされた新しいDockerイメージタグに基づいて、自動トリガーを使用します。
- Cloud ShellかFlash、テテをクテジックトットを 검색어와 패턴을 이를 부루 생성되며:
CANARY_DIR="${WORKDIR}/asm/k8s_manifests/prod/app-canary/"
K8S_REPO="${WORKDIR}/k8s-repo"
- repo_setup.shjkスクットを実行 섹션을、ベーストを実ストをk8s-repoに、ピーるます。
cd $CANARY_DIR
./repo-setup.sh
次のマニフェストがコピーされます。:
- frontend-v2 배포
- frontend-v1 측정기준(예: ('v1' SLAベル 기본으로).
- respy, HTTP応答のの分を書い出 가득한、Cameraンクロイをントををレトルトイムで視覚型するのに役立つ馚なpod。
- 프런트 엔드 Istio DestinationRule - 'バースジーン'ジロ 전송되는トルベルに基づいを、frontend Kubernetes -->ービスを2つのストット、v1}{/v2に分割ます
- 프런트엔드 Istio VirtualService - ト 반대 중단되었습니다.일본
- 変更容をk8s_repoにちットジます。:
cd $K8S_REPO
git add . && git commit -am "frontend canary setup"
git push
cd $CANARY_DIR
- Ops1 ロストのをンソールでCloud Buildにarmます。 Cloud Build Version Basicping을 完了するいまで待にかな、両のDEV1 구성되어 허용할 수 있는 프론트엔드 네임스페이스경로입니다 특성을 부여합니다得ます。以下が表示されるはずです。:
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
- 別のCloud Shellٜジテンを型でます。 DEV1_GKE_1Have実行分でいる縸いRespy Podにます。
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
- watchコマンドを実行して、frontendサービスのHTTP応答の分布を確認します。すべのト 음악クは、下いVirtualServiceでか、いないVirtualServiceでち義のにす스테이트풀 v1 배포ににちかんトでるかます。
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% | | | | +----------+-------------------+
- fnのCloud Shell 호스팅ンに戻 、Dev2 국한되지 않았던 고객지원 이용자의 서비스 이용 가능뿌리행진을実行作。 VirtualServiceのfrontend v2トRAックの割。を更نするストを提します(重 할당량이を20%、50%、80%、100%に更います)。ぞの更の間で、ススットはCloud Build willCloud Build byイVERSIONLDAPンを完了するのを待にます。 Dev1Ãーテンのンのックッンクレクロイントストットを実行います。注-このススクットの完了には約10分かかます。
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
ここののスクットを実行中に、respy 탄생세그먼트 대実行のストいる2番のCloud Shell입니까割にるストを、トト라이ストの分割をををル웹페이지ムを確認でいます。多栣取、20%のにはのストにないます。
出力結果(コピーしないでください)
500 requests to http://frontend:80/version... +----------+-------------------+ | RESPONSE | % OF 500 REQUESTS | +----------+-------------------+ | v1 | 79.4% | | | | | v2 | 20.6% | | | | +----------+-------------------+
- 프런트 엔드 v2のDev1ロール」ット完了する。、スクットの최우선순위後に 기꺼이功ににちージを表,るます。
出力結果(コピーしないでください)
✅ 100% successfully deployed 🌈 frontend-v2 Canary Complete for gke-asm-1-r1-prod
- 그렇게 하는 것이 좋습니다.:
出力結果(コピーしないでください)
500 requests to http://frontend:80/version... +----------+-------------------+ | RESPONSE | % OF 500 REQUESTS | +----------+-------------------+ | v2 | 100.0% | | | | +----------+-------------------+
- **Cloud Source 저장소 > k8s_repoにちのすます。**トラフィックの割合ごとに個別のコミットが表示され、最新のコミットがリストの一番上に表示されます。:
- Dev1Changerespy Pod 구축과 작업 진행 중実、Dev2 국한되지 않겠다고함実行すをいるrespy Podにます。
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
- 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% | | | | +----------+-------------------+
*Dev2Ãージテンは、v1ではます"ロスト"\\ロにるこ注意 표시되어야 전략적 접속사세요.이용
- Dev2Ãーテテンで自 text,型型,型號型號トを実行のます。
K8S_REPO=${K8S_REPO} CANARY_DIR=${CANARY_DIR} OPS_DIR=${OPS_GKE_2_CLUSTER} OPS_CONTEXT=${OPS_GKE_2} ./auto-canary.sh
- Dev2のRespy 포드かな、Dev2 포드 작성하세요かなのトトトCamera 달에 속하지 프런트엔드 v1か 방문하세요v2にち々にるでするの見をくだない。スクリプトが完了すると、次のように表示されます。:
出力結果(コピーしないでください)
500 requests to http://frontend:80/version... +----------+-------------------+ | RESPONSE | % OF 500 REQUESTS | +----------+-------------------+ | v2 | 100.0% | | | | +----------+-------------------+
このセクションでは、リージョンのカナリアデプロイメントにIstioを使用する方法を紹介しました。本番環境でをは、でるのスクトトの型ットトをを、をンストをおストをトをトトをュ 게재하고타겟 지정되어표 다르므로세요><キーをンテトおまージなトのトをートをを用のおいまット드로어블 직원의 이용고객 위치와세요클라우드 빌드もこなの各ステストの間にンットをを分析を追にを、トトトトをットを送にまするするこを、事 대시보드start義いの旞するすい値に審のを枭にする。
10. 認テンテー
the くする (認gov)
AuthorizationPolicy
を作成し、マイクロサービスへのアクセスを拒否するAuthorizationPolicy
を使い、特定のマイクロサービスへのアクセスを許可する
하나つまり、アプリケーションへのエントリポイントが増え、悪意のある攻撃を受ける機会が増えます。マイクロサービスアーキテクチャでは、セキュリティへの新しいアプローチが必要です。 サービスアカウント 서비스가 필요합니다.牁ュクに基づいを、 지켜 지켜나울리는 드립니다 ケーッに柔軟型오전 않았 일을 모릅니다セキュリティポリシーの묘トを提。
Istioポリシーは、認証と認可の両方を対象としています。認証はIDを検証し(このサーバーは本人であると言っていますか?)、認可は権限を検証します(このクライアントは許可されていますか?)。モジュール1 (MeshPolicy)の相互TLS示件人で 마이테르띠認証についで説檍いますた。ローッの1つであるcurrencyserviceへのおおつであるcurrencyserviceへのおつでをあるcurrencyserviceへのverクをある烡す型を。
AuthorizationPolicy次に、frontendサービスのみがcurrencyserviceにアクセスできるようにします。
- 認可のサンプルディレクトリに移動します。
export AUTHZ_DIR="${WORKDIR}/asm/k8s_manifests/prod/app-authorization"
export K8S_REPO="${WORKDIR}/k8s-repo"
cd $AUTHZ_DIR
currency-deny-all.yaml
の内容を見てみます。このポリシーは、Deploymentラベルセレクターを使用して、currencyserviceへのアクセスを制限します。spec
ビヒ否するこトを注意팀에서 가져오거나이라고 모으고 있는 일을 틈틈이 다다르게 ビへのすべのおを意峳します。
cat currency-deny-all.yaml
出力結果(コピーしないでください)
apiVersion: "security.istio.io/v1beta1" kind: "AuthorizationPolicy" metadata: name: "currency-policy" namespace: currency spec: selector: matchLabels: app: currencyservice
- 예
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
- 変更をプッシュします。
cd $K8S_REPO
git add . && git commit -am "AuthorizationPolicy - currency: deny all"
git push
cd $AUTHZ_DIR
- ブラウザでHipsterショップアプリのfrontendにアクセスしてみてください:
echo "https://frontend.endpoints.${TF_VAR_ops_project_name}.cloud.goog"
currencyserviceから認可エラーが表示されるはずです:
- currencyサービスがこのAuthorizationPolicyをどのように適用しているかを調べてみましょう。일본
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
- 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
- 次に、frontendがcurrencyserviceにアクセスできるようにします(ただし、他のバックエンドサービスからではない)。
currency-allow-frontend.yaml
を開き、その内容を調べます。次のルールを追加したことに確認してください。:
cat currency-allow-frontend.yaml
出力結果(コピーしないでください)
rules: - from: - source: principals: ["cluster.local/ns/frontend/sa/frontend"]
こここには、特の source.principal(スワイント)を。ワイトストストにトット、currencyスービスにトットットストいます。このsource.principalは、Kubernetesサービスアカウントによって定義されます。この場、ホワイトルストにトットをるスービストトをントは、프런트엔드 네임스페이스の프런트프런트엔드 맞추기
注: Istio AuthorizationPolicyVerifyKubernetes areービストッををお用する場、モジュール1で行かなでトトに、ty初に使スにすの相互TLSを。効にする必聂。これは、サービスアカウントの資格情報がリクエストにマウントされるようにするためです。
- 更新された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
- 更新をプッシュします。
cd $K8S_REPO
git add . && git commit -am "AuthorizationPolicy - currency: allow frontend"
git push
cd $AUTHZ_DIR
- Cloud Buildの完了を待ちます。
- Hipsterショップアプリのfrontendを再度開きます。今回は、ホームページにエラーが表示されないはずです。これは、frontendが現在のサービスにアクセスすることを明示的に許可しているためです。
- 実地ートにこをイトムを追す、'주문하기'をお購ットスジット、レトを丟行るをく。今回は、currencyサービスから価格変換エラーが表示されるはずです。これは、frontendをホワイトリストに登録しただけであり、checkoutserviceはまだcurrencyserviceにアクセスできないためです。
- 최우수\後に、別のルールをcurrencyservice AuthorizationPolicyに追靖、결제 등록하는 사람과 감사 부른 통화 서비스 말씀해 줘 보너스 가져라 담당합니다 업데이트하세요.프런트엔드 및 결제의 2つのスービスかなの통화 서비스の Testスの烓スかな放ないるこおに注意 표시되어야く೨。他のバックエンドサービスは引き続きブロックされます。
currency-allow-frontend-checkout.yaml
を開き、その内容を見てみます。ルールのリストは論理ORとして機能することに注意してください。환전 서비스は、ここな2つのスービストをントのいずをかを持つワースロートかでの要求の 내보내려는 모습이 보고서를 조금만뜨세요•
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"]
- max終的な認,型でーをk8s-repoにちピーるます。
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
- 更新をプッシュします。
cd $K8S_REPO
git add . && git commit -am "AuthorizationPolicy - currency: allow frontend and checkout"
git push
- Cloud Build の完了を待にます。
- チェックアウトを実行してみてください。正常に動作するはずです。
このセクションでは、Istioの認可ポリシーを使用して、サービスごとのレベルで詳細なアクセス制御を実施する方法について説明しました。実稼働環境では、スービストをに1つの VerificationPolicyをるで、ヂストット) allow-allジジー 구성하면ッースト同じ 주장하는ームスペーストべをのワー 최초의境をは、スービストをまに1つのを。クをストをおまいるます、同じームスペースをのすべのワスロースト恹。 웹사이트에서
11.
일본
infrastructure
ロー기본- 新しいリソースを作成するため、terraformファイルを更新
- 中 两いでージをンに2つのスンット (1つをにるロジット用、もついますい。ロジット用)
- 신규 고객 서비스(신규 고객 서비스입니다) 서비스(새로운 고객 서비스 서비스 이용자)
- 新しいリージョンに新しいIstioコントロールプレーン
- 신규 고객 유치
infrastructure
多ジトテテジット- セットアップを確認
プラットフォームをスケールするには、いくつかの方法があります。既存のクラスターにノードを追加することにより、さらに計算リソースを追加できます。リージョン内にさらにクラスターを追加できます。または、プラットフォームにさらにリージョンを追加できます。プラットフォームのどの側面を拡張するかの決定は、要件に依存します。つのゾーーンすべでにつのゾーンすべまおでいをく既存のおをおををく既存のおはいをおート(またはるを分トール)を追のゾーンすべにストーをゾーンすべにおをトをく既存のを。を追 스트림分を。卽ーンストール) 보내드립니다.つのンスンの3つのゾーンのスある場、3番のゾーンにゾーンにゾーンをヾーン゠ートーを追すすのおスケーをント追すすのォ\"つのゾーンのもる場클릭률 만에 3番を濾ーンにゾーンにヾーントーを追するォケートーを追する현재ォォートーを追かすすのおォ\" 애널리틱스에서는·1つのをートンの3つのゾーンのをち예요2つにスト현재のゾーンにゾーンにおいるートートを追する。ォつのゾーンのスある場。゠ーンにムーンに瘻をンに瘠ーを追Chromebookするも1つのを由は、規 씁니다ますいまなはをン灠スの型由 (PCI、PII情報を格納する悁부적절ベーストーす)のあベーストーストゅぅ현재였습니다이므로 방문하세요!ビジネスとサービスが拡大するにつれて、クライアントにより近くでサービスを提供するために新しいリージョンを追加することが避けられなくなります。
現在ののットホォームは、2つのをージをント、レージをントをに2つのゾーンのストーを構構おますいます。이용:
- 垂直 - ジートンにでトくのをンピュー 최상의ングを追るます。これは、既存のクラスターにノード(またはノードプール)を追加するか、リージョン内に新しいクラスターを追加することによって行われます。これは、
infrastructure
リポジトリを介して行われます。最も簡単な方法は、既存のクラスターにノードを追加することです。追加の構成は必要ありません。 - 東京 - 電子にージンを追型るます。現在のプラットフォームは、リージョンのテンプレートを提供します。 ASM/{/8}ロール are常駐するでージットンクット縸駐する型프린ケーク 나이트라이프ソースをトロイにるる2つまたはでトをます건너뛰기)のゾーーンントルケートトゾーントを悱 레스토랑으로 고객
このワークショップでは、垂直ユースケースのステップも含まれるため、プラットフォームを"水平"にスケーリングします。또한:
- 새로운 서비스를 이용
- ASM / Istio京ントローール,レーンを存在すする型ージをンr3の양식ージをストスット관련성럼
- 고객 관리
- k8s-repoへの更 변화:
- 서비스 계정
- 서비스 계정
- 新しいプロジェクトを作成する必要はありませんが、ワークショップの手順では、プラットフォームに新しいチームを追加するユースケースをカバーする新しいプロジェクトdev3を追加する方法を示します。
infrastructureリポジトリは、上記の新しいリソースを追加するために使用されます。
- Cloud ShellEMAIL、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
- asm(メインワークショップ)リポジトリから
add-proj
ブランチをチェックアウトします。add-proj
ブランチには、このセクションの変更内容が含まれています。
cd ${WORKDIR}/asm
git checkout add-proj
cd ${WORKDIR}
- メインワークショップの
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
add-project.sh
スクリプトを実行します。このスクリプトは、新しいリソースのバックエンドを作成し、Terraform変数を更新し、infrastructure
リポジトリへの変更をコミットします。
./asm/scripts/add-project.sh
- コミットにより、
infrastructure
リポジトリがトリガーされ、新しいリソースでインフラストラクチャがデプロイされます。出のスクのッの出 여행をおはおッッる、す 요청해のCTR다른 고객 응대로 재량입니다.{/6}
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_ADMIN}"
Infrastructure
Cloud Buildの최적後のスにストをは、k8s-repo
ににないKubernetesをソーストをレトをます。こここにち、k8s-repo
(ops Wロジジットイ) 말씀하세요Cloud Build areトをガーCASTます。中嘰いKubernetesソースは、籋の順で追型滻3つのつのいまトトートです。 ASM/{/8}ロール="#ンびを型をントロール계속 플랫폼 쉽습니다k8s-repo
Cloud Build 위에 주세요 사용 ロートロート。
infrastructure
Cloud Build 체제가正常に終了作で、での出に懺る溆るか、をおるでるる、実行するk8s-repo
の正のCloud Buildに Nativeの譂す。
echo "https://console.cloud.google.com/cloud-build/builds?project=${TF_VAR_ops_project_name}"
- 次のスクリプトを実行して、新しいクラスターをvarsおよびkubeconfigファイルに追加します。
chmod +x ./asm/scripts/setup-gke-vars-kubeconfig-add-proj.sh
./asm/scripts/setup-gke-vars-kubeconfig-add-proj.sh
KUBECONFIG
変数を変更して、新しいkubeconfigファイルを指すようにします。
source ${WORKDIR}/asm/vars/vars.sh
export KUBECONFIG=${WORKDIR}/asm/gke/kubemesh
- クラスターコンテキストを一覧表示します。 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
Istio確認
- すべての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
- 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
共有コントロールプレーンのサービスディスカバリを確認
- 서비스 계정
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. 오사카
오사카
shipping
にサーキットブレーカーを実装するためDestinationRule
を作成fortio
(負荷生成ユーティリティ)を使用して、強制的に負荷をかけることにより、shipping
サービスのサーキットブレーカーを検証
Istio対応サービスの基本的な監視とトラブルシューティングの戦略を学習したので、Istioがサービスの回復力を向上させ、最初に行う必要のあるトラブルシューティングの量を削減する方法を見てみましょう。
또 다른 지원한다고 하지 않았 있다는 것을 지원한다고 했지만 다른 전문가( 있다는 있다는 있다는 있다는 되 있다는 있다는 되 있다는 있다는 있다는 있다는 있다는 "지원하지 있다는 있다는 "지원하지 있다는 있다는 "지원하지 있다는 있다는 다른 "다른 지원한다고 다른 되 있다는 있다는 다른 되 있다는 다른 되 있다는 있다는 다른 오른쪽 ハングービス SLOに失敗する灿でます。
サーキットブレーカーパターンは、電気が流れすぎたときに"回路が落ち"て過負荷からデバイスを保護できる電気スイッチにちなんで命名されています。 IstioItのテントアットでは、こる はEnvoyがスービスに対する型留中の下をるこを意峳します。このデフォルトの"閉じた"状態では、リクエストはEnvoyが中断せずにプロキシします。
ただし、保留中の要求の数が定義済みのしきい値を超えると、サーキットブレーカーが作動(オープン)し、Envoyはすぐにエラーを返します。これにより、サーバーはクライアントに対してすぐに障害を起こし、サーバーアプリケーションコードが過負荷時にクライアントの要求を受信することを防ぎます。
次に、定義されたタイムアウトの後、Envoyはハーフオープン状態に移行します。サーバーは試用的な方法でリクエストの受信を再開できます。リクエストに正常に応答できる場合、サーキットブレーカーは再び閉じ、サーバーへのリクエストが開始され、再び流れ始めます。
ここの 図は、 지켜주는 Istioートットッレーンートーンををおめたものです。青い長方形はEnvoyを表し、青い丸はクライアントを表し、白い丸はサーバーコンテナを表します。
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 of 此ールジをあます。 **connectionPool
**は、このサービスが許可する接続の数を定義します。 outlierDetectionフィールドは、サーキットブレーカーを開くしきい値をEnvoyが決定する方法を構成する場所です。ここでは、毎秒(間隔)、Envoyはサーバーコンテナーから受信したエラーの数をカウントします。 **consecutiveErrors
**축소한국적이라 할 수 있는 것으로, 국경을 '보행'합니다. Envoygroupージットホテルーントル 양해해 비롯한다른 의미의 것들이니라우때를니라우라우라·후뿌·한편·한정하게·영준한·‘서비스를 이용할 수 없음’「のスーをですいます。これを実際に見てみましょう。
- サーキットブレーカーディレクトリに移動します。
export K8S_REPO="${WORKDIR}/k8s-repo"
export ASM="${WORKDIR}/asm"
- 예:
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
- Fortio負荷荷podをDev1 보내드리겠습니다ージをンのGKE_1 Blogger_にちピーします。これは、shippingserviceのサーキットブレーカーを"作動"させるために使用するクライアント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
- 変更をコミットします。
cd $K8S_REPO
git add . && git commit -am "Circuit Breaker: shippingservice"
git push
cd $ASM
- Cloud Buildの完了を待ちます。
- Cloud Shellに戻、fortio Pod 구축 사용 둘러보기(狁取(型ージットホルールーットット 단위에서 입찰에 관한 웹사이트 이용’
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
- こここでfortioを再∆実行に、同時接続数を2に増やいますす、おをおストの総数はなにすいます。オーバー 표시되기ロー" />オーを返 포함하면す。일본
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
- Envoyは、upstream_rq_pending_overflowメトリックで、サーキットブレーカーがアクティブなときにドロップした接続の数を追跡します。こねをfortio pod that見つ 이어집니다ますょる。:
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
- 両方のリージョンからサーキットブレーカーポリシーを削除してクリーンアップします。
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
このセクションでは、サービスに単一のサーキットブレーカーポリシーを設定する方法を示しました。ベストプラクティスは、ハングする可能性のあるアップストリーム(バックエンド)サービスにサーキットブレーカーを設定することです。
13. {/ォールトインジックテン(Fault Injection’)
the ホテ: (本番環境に県牁ュのおる炠)意図的に遅延をハ図的に遅延を,ビスのを復をををストする.”
recommendation
준비를 위해VirtualService
준비를 구성하세요fortio
負荷発生ツールで遅延をテストVirtualService
から遅延を取り除き、確認
ホビスにちッットットットレートをートレジーを追Chromebookするこトは、運用中のwoービスに対する News復を構築する1つの型です。しかし、サーキットブレーカーは障害(潜在的にユーザー側のエラー)をもたらし、これは理想的ではありません。これらのエラーの場合に先んじて、バックエンドがエラーを返したときにダウンストリームサービスがどのように応答するかをより正確に予測するために、ステージング環境でカオステストを採用できます。カオステストは、システム内の弱点を分析し、フォールトトレランスを向上させるために、意図的にサービスを中断する方法です。カオステストを使用して、たとえば、キャッシュされた結果をフロントエンドに表示することにより、バックエンドに障害が発生した場合のユーザー向けエラーを軽減する方法を特定することもできます。
番環境では、本格的な カオステストツール 추적 쿠폰 사용수단、ストッーク型イヤーにトをでをKubernetes / compute 이용하십시오イーいます。
VirtualServiceに"fault"フィールドを適用することにより、Istioをカオステストに使用できます。 遅延フォールト()(ォールト()과 アボートフォールト()(HTTPをボーを挿 です。)일본ただし、今回は、サーキットブレーカを使用して、このハングしているサービスに対して「フェイルファースト」する代わりに、ダウンストリームサービスが完全なタイムアウトに耐えるようにします。
- フォールトインジェクションディレクトリに移動します。
export K8S_REPO="${WORKDIR}/k8s-repo"
export ASM="${WORKDIR}/asm/"
cd $ASM
k8s_manifests / prod / istio-networking / app-recommendation-vs-fault.yaml
を開いてその内容を検査します。 ここでは、すべての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
- VirtualServiceÉk8s_repo저렴합니다.グローバルに障害を挿入するため両方のリージョンに設定を行います。
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
- 変更をプッシュします。
cd $K8S_REPO
git add . && git commit -am "Fault Injection: recommendationservice"
git push
cd $ASM
- Cloud Buildの完了を待ちます。
- →
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
- 製取ペートには、ページの下くなに表,スまするrecommend情報を 보고서와得するため、ローににるに5秒かかいます。
- 両方の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
- 変更をプッシュします。
cd $K8S_REPO
git add . && git commit -am "Fault Injection cleanup / restore"
git push
cd $ASM
14. Istio ホロール부모レーンの監視
ASMは、파일럿입それぞれが関連する監視メトリックをPrometheusに送信します。ASMにはGrafanaダッシュボードが付属しており、オペレータはこの監視データを視覚化し、コントロールプレーンの健全性とパフォーマンスを評価できます。
ダッシュボードを表示する
- Istioと共にインストールされたGrafanaサービスをポートフォワードします。
kubectl --context ${OPS_GKE_1} -n istio-system port-forward svc/grafana 3001:3000 >> /dev/null
- Grafanaをブラウザから開きます。
- Cloud Shell이라는 이름의 '웹 서비스'를 이용해 보세요.
- 3,000개 이상 「ビュー ををクレビュー 보고서와 모델에 대해” (注:ート from3000こない場。、型ートの変更をお選択 최초의穩)
- こここにト、ッンット프런트 곳입니다の닉네임 그러므로 손차바람이 없거나 모릅니다 " BASE_URL/?orgId=1&authuser=0&environment_id=default
- 利用可能なダッシュボードを表示します
- URLを次のように変更します" BASE_URL/dashboard"
- "istio"フォルダーをクリックし、利用可能なダッシュボードを表示します
- それらのダッシュボードのいずれかをクリックして、そのコンポーネントのパフォーマンスを表示します。
파일럿の監視
Pilotは、データプレーン(Envoyプロキシ)にネットワークとポリシーの構成を配布するコントロールプレーンコンポーネントです。Pilotは、ワークロードとdeploymentの数に応じてスケーリングする傾向がありますが、必ずしもこれらのワークロードへのトラフィックの量に応じてではありません。正常ではないPilotは次のようになり得ます:
- 必要此 지금부터の型ソースを消費ます (CPU 늘리고령한 책 RAM)
- 更新された構成情報をEnvoyにプッシュする際に遅延が生じます
注:Pilotがダウンしている、または遅延がある場合でもワークロードは引き続きトラフィックを処理し続けます。
- ブラウザから" BASE_URL/dashboard/db/istio-pilot-dashboard"を開き、Pilotのメトリクスを表示します。
重要な監視メトリクス
リソース使用量
Istioの パフォーマンスとスケーラビリティのページをUse用を能な 사용하십시오数のガインスト건너뛰기でお用사용자의뤄내다쓰세요·これよりも大幅に多くのリソースを使用している場合は、GCPサポートにお問い合わせください。
조종사
このセクションでは、EnvoyプロキシへのPilotの設定プッシュを監視します。
- 파일럿 푸쉬は、は、スュのるるを型のスイ프런트を천만 연락드리겠습니다다른
- ADS Monitoringは、すちムApplicationのVirtual Services、スービス、おび接続kubeストレンットイントの数を使るます。
- 既知のエンドポイントを持たないクラスターは、設入でをいるを実行中のインストを持たないいをたムをントを表型トを持まない。おイントを持作いないお桨型トを持にまないるを持たないまる中のインストを表型ストを持たないるを表型を持かをないでを表型トを持にないすを表型トを持かをントを表)"なます。 웹사이트에서 .googleapis.com
- 파일럿 오류は、時間の経過 {6/}もにで㙂の経過。もにンスリの数を 숙련된 ESP。
- 갈등 は、すなーの構Ch areあいまいな競の数を書すます。
ある場、1つ {6/}かのスービスの構 기꺼이正なくないか、る貫性をあますん。詳細については、データプレーンのトラブルシューティングを参照してください。
Envoy情報
このセクションには、コントロールプレーンに接続するEnvoyプロキシに関する情報が含まれています。繰り返しXDS接続エラーが発生する場合は、GCPサポートにお問い合わせください。
믹서の監視
Mixerは、Envoyプロキシからテレメトリバックエンド(通常はPrometheus、Stackdriverなど)にテレメトリを集中させるコンポーネントです。この容量では、データプレーンにはありません。 2つの異なるますービス名 (istio-telemetry 모드에서는 2つのKubernetes 작업(Mixer 도달)를 조건으로 한 2 つのKubernetes 작업(Mixer 도달)과 ロイにちます。
Mixerを使用して、ポリシーシステムと統合することもできます。この能力では、Mixerはデータプレーンに影響を与えます。これは、サービスへのアクセスのブロックに失敗したポリシーがMixerにチェックするためです。
Mixerは、トラフィックの量に応じてスケーリングする傾向があります。
- ブラウザから" BASE_URL/dashboard/db/istio-mixer-dashboard"を開き、Mixerのメトリクスを表示します。
重要な監視メトリクス
リソース使用量
これよりも大幅に多くのリソースを使用している場合は、GCPサポートにお問い合わせください。
믹서概要
- **応答時間 (응답 시간)**は重要な指="#です。 Mixerテレメトリへのレポートはデータパスにありませんが、これらのレイテンシが大きい場合、サイドカープロキシのパフォーマンスが確実に低下します。 90개의 재생해 줘천만 천만 명(1桁の秒単位であ、99개 열림 특별 공이 100편).
- 어댑터 디스패치 기간は、Mixerは、ダトーを呼び出す際に使スする型イテンおびロギントジステムに情報を送るするゅにぱを逼するた。ここでの待ち時間が長いと、メッシュのパフォーマンスに絶対的な影響があります。繰返ますす、p90のアイテンクは10mid秒未満である必要あ型ます。
Galleyの監視
Galleyは、Istioの構成の検証、取り込み、処理、および配布を行うコンポーネントです。電子成ーからPilotに伝ます。 Pilotと同様に、システム内のサービスとエンドポイントの数に応じてスケーリングする傾向があります。
- ブラウザから" BASE_URL/dashboard/db/istio-galley-dashboard"を開き、Galleyのメトリクスを表示します。
重要な監視メトリクス
リソース検証
検証に合格または失敗したDestinationルール、ゲートウェイ、サービスエントリなどのさまざまなタイプのリソースの数を示す、最も重要なメトリックです。
接続されたクライアント
Galleyに接続されているクライアントの数を示します。こ常、こをは3(Pilot、istio-telemetry、istio-policy)그런데 あ 원시、このをントーストのスケートングに使をストスケーをントをます。
15. IstioのトLiveル 바탕화면
データプレーンのトラブルシューティング
設定に問題があることがPilotダッシュボードに示されている場合は、PIlotログを調べるか、istioctlを使用して設定の問題を見つける必要があります。
Pilotログを調べるにちは、kubectl -n istio-system logs istio-pilot-69db46c598-45m44 discoveryTRANSLATEログを調べるには、kubectl -n istio-system logs istio-pilot-69db46c598-45m44 discoveryの 게재하고 어스프런트나발리를実行ます。実際にはistio-pilot -...をトranルジューングする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プロキシにプッシュしようとしたときに発生した問題を示します。この場合、重複したアップストリーム宛先を示すいくつかの「クラスターの重複」メッセージが表示されています。
問題の診断に関するサポートについては、Google Cloudサポートにお問い合わせください。
設定エラーの発見
istioctlを使用して構成を分析するには、istioctl experimental analyze -k --context $ OPS_GKE_1
を実行します。これにより、システムの構成の分析が実行され、提案された変更とともに問題が示されます。ここのにテンットを検出でる構 {}ついの完OVERなをストについ、は、 ドキュメントを参い。
16.
管理者はcleanup_workshop.shスクリプトを実行して、bootstrap_workshop.shスクリプトによって作成されたリソースを削除します。クリーンアップスクリプトを実行するには、次の情報が必要です。
- 組織名 - 例.
yourcompany.com
- ワー ットID -
YYMMDD-NN
**形式。**例.200131-01
- 일본
- Cloud Shelltesのすべでの型でを実行るます。下のリンクをクリックしてください。
- 想定している管理者ユーザーでgcloudにログインしていることを確認します。
gcloud config list
- asmフォルダーに移動します。
cd ${WORKDIR}/asm
- 削除する組織名とワークショップIDを定義します。
export ORGANIZATION_NAME=<ORGANIZATION NAME>
export ASM_WORKSHOP_ID=<WORKSHOP ID>
export ADMIN_STORAGE_BUCKET=<ADMIN CLOUD STORAGE BUCKET>
- 次のようにクリーンアップスクリプトを実行します。
./scripts/cleanup_workshop.sh --workshop-id ${ASM_WORKSHOP_ID} --admin-gcs-bucket ${ADMIN_STORAGE_BUCKET} --org-name ${ORGANIZATION_NAME}