■24/5/9 12:00AM
Pubsub
■pubsubPublisher app → |GCPの藹??| Topic(Schema) → Subscription 1や2 |GCPの藹??| → Subscriber app
サブスクライバ繝?app縺?Pull/PushさせるPull/Pushのサブスクリプションをトピックに軆??づける設藹??をしてお縺?
[Click for image]
【図解付き】Cloud Pub/Subに觸??要や使い方について繧?かりやすく解説 - KIYONO Engineer Blog (kiyono-co.jp)Pub/Sub サービスの觸??要 | Pub/Sub ドキュメント | Google CloudGCP縺?Cloud PubSubで考慮するこ縺? - Carpe Diem (hatenablog.com)Pub/Sub の割り当てと臀??限 | Pub/Sub ドキュメント | Google Cloudアプリで簡単縺?Pubsubにパブリッシュや、サブスクもできるので、アプリ間の連携縺?Pubsubが使える 窶? 非同期処理(画蜒?処理とか重めのも縺? 窶? IDの種類 (message id, subscription id, topic id, ack id, project idあたりがアプリでは使繧?れるっぽい 窶?ack id縺?pull時のみ縺?Pushのとき縺?httpステータスコードが200縺?ackとなるGCP - Pub/Sub サービス觸??要 #GoogleCloud - QiitaPub/Sub メッセージの臀??成とレスポン繧? | Python 逕? App Engine フレキシブル環藹??に関するドキュメント | Google Cloudトピック・??メッセージのパブリッシュ先)
窶? スキーマ/外部アクセス許藹??/リテンショ繝?/GCS/バックアップの設定がある (Push/Pullの設定はない) 窶? パブリッシュ側のベストプラクティ繧? (JWT) Pub/Sub トピックにパブリッシュするためのベスト プラクティ繧? | Pub/Sub ドキュメント | Google Cloudサブスクライバ縺?Push縺?Pull (Push縺?Endpointが必要、デフォルト縺?pull) GCP - Pub/Sub サービス觸??要 #GoogleCloud - Qiita 窶? at-least-once (少な縺?とも1回) 配信を觸??供します 窶? 同じ順蠎?指定キーを持ち、同じリージョンに藹??在している場合は、メッセージの順蠎?指定を有効にできます 窶? サブスクライバーが31日間未使用、またはサブスクリプションが未更新の場合、サブスクリプションは期限切れ 窶? メッセージ数が多い縺?pull向き サブスクリプショ繝? タイプを選択する | Pub/Sub ドキュメント | Google Cloudpush縺?httpsが必要? push サブスクリプションを作成する | Pub/Sub ドキュメント | Google Cloud 窶? push エンドポイントのサーバーには、認証藹??が署名した有効縺? SSL証譏?書が必要縺?https 窶? Cloud run 縺?Event Arcを設藹??するとサブスクが自動作成されrunのデフォルトhttps縺?URLが使繧?れるが、これ縺?PullよりPushで藹??定した 窶? CronバッチならPullで藹??定するので縺??大驥?リクエスト縺?Pull向きとある(Pullは失敗処理込みの話かも知れん)トピックのリテンショ繝?:デフォルトなし、最蟆?蛟?:10分、最大蛟?:31譌?サブスクのリテンショ繝?:デフォルト蛟?:7日、最蟆?蛟?:10分、最大蛟?:7譌? サブスクリプショ繝? プロパテ繧? | Pub/Sub ドキュメント | Google Cloudpubsub ack期限(Ack Deadline)
•デフォルト60秒> 設藹??10分>ack延長で最螟?1時間まで伸ばせると思繧?れる リース管理で確認時間を延長する | Pub/Sub ドキュメント | Google Cloud 窶?exactly onceを設藹??しなければ期限の延長は臀??証されない 窶?ack期限を驕?縺?る、あるい縺?Nackを返す場合、メッセージは再配送される 窶?ack応答期限の延長縺?99パーセンタイ繝?(上位1%の値よりも蟆?さい値のうち最大の蛟?)縺? modifyAckDeadlineを返し、延長してもMaxExtension (ack期限を延髟? する最大蛟?) 60minま縺??
modifyAckDeadlineリクエストを定期的に発鐔??すればよいらしいメッセージの再試鐔??を強制するに縺?
窶?nack リクエストを送菫? •饅??レベルのクライアント ライブラリを使用していない場合は、ackDeadlineSeconds を0に設定し縺? modifyAckDeadline リクエストを送信するexactly once
1 回限りの配菫? | Pub/Sub ドキュメント | Google Cloud 窶?pullなら設藹??できる。他には、Cloud Dataflowを組み合繧?せる(プログラムコード縺?Dataflowを使う感じかり、あるい縺?messageについているunique idを利用して、KVS を用いたステート管理をして自前で重複を觸??除する •再配信は、メッセージに対してクライアントによる否藹??確鐔??応答が行繧?れた場合、または確認応答期限が切れる前にクライアントが確鐔??応答期限を延長し縺? かった場合のいずれかか藹??因で発生することがある。 窶?exactly onceはエラーでも再配信縺?Pubsubパニックしないようにしたいために使うものではない?pubsubはトピック縺?PublishされたメッセージをDataflowに藹??き継げる
Dataflow (Apache Beam) を大驥?のメッセージをバッチ処理する場合に使える Pub/Sub→Dataflow→処理 窶?Apache Beamのウィンドウ処理とセッション分析とコネクタのエコシスエムがある •メッセージ重複の削除ができる 窶?pubsub>dataflow>BQやGCS: この觸??れでログ軆??をストーリミングで入れ込めるBQサブスクリプショ繝? (PubSub縺?BigQuery Storage Write API を使用してデータを BigQueryテーブルに送信、GCSサブスクもある) Langganan BigQuery | Dokumentasi Pub/Sub | Google Cloud BigQuery サブスクリプションの臀??成 | Pub/Sub ドキュメント | Google Cloudサブスクライバ繝?App側のコードでのフロー制御によりちょっと藹??てよのトラフィック急藹??対藹?? フロー制御を使用して臀??時的な急藹??を処理する | Pub/Sub ドキュメント | Google Cloudデッドレタートピッ繧? (配信試行回数が見れる)やエラーでの再配菫? メッセー繧? エラーの処理 | Pub/Sub ドキュメント | Google Cloud 窶? Pub/Subサブスクリプションにデッドレタートピックを設藹??してお縺?と、一定の回数再送信が失敗したメッセージの藹??先がデッドレタートピックに藹??更され貯められるメッセージのフィルタ、同時実行制御により多いメッセージに対応 サブスクリプションからのメッセージをフィルタする | Pub/Sub ドキュメント | Google CloudPubsubをローカルでエミュレートする エミュレータを使用したローカルでのアプリのテスト | Pub/Sub ドキュメント | Google Cloudpubsubのスナップショットやリテンショ繝?クイックスタート: スナップショットまたはタイムスタンプまでシークし縺? Pub/Sub でメッセージを再生する | Pub/Sub ドキュメント | Google Cloudトピックにリテンションを設藹??しスナップショット作成> 驕?去のサブスクしたメッセは鐔??えなさそうサブスクにリテンションを設藹??しスナップショット作成> 驕?去縺?Ackしたメッセは鐔??えなさそうスナップショットでどう使うのか? cloud pubsubで配信觸??みのメッセージを再送する #PubSub - Qiita キューがたまっているときに撮るものと思繧?れる。またシーク時間のポイントを設藹??する諢?味がある スナップショットとシークを使いこなして特藹??期間の再実行を行う機閭? スナップショットで再実行する シークは指定時間か最後のスナップショット以降のサブスク再実行(実際push縺?runが再実行された)Pubsubにどんなメッセージが入ってきているか確鐔??する方觸?? pull形藹??ならAckしなけれ縺?pullボタンで拾い見れる (トピックでパブリッシュしてサブスク縺?Pull し見る) トラブルシュートはログを見るかデッドレタートピックかGCSバックアップを見る?デッドレターキュ繝?(ドロップしたものの確認と救済?) サブスク縺?DLQ縺?ONしデッドレタートピックを設藹??し転送する>GCSにもバックアップできる DLTでメッセー繧?(実行済縺?OR未藹??行)の再生データ形蠑?:スキーマを使うか、スキーマなしならdataで藹??得できる トピックのスキーマを作成する | Pub/Sub ドキュメント | Google Cloud Cloud Pub/Subの觸??要縺?Pythonでの藹??霍? - case-kの備忘骭?from google cloud import pubsub_v1from avro.io import DatumReader, BinaryDecoderfrom avro schema import Parseproject_id="your-project-id"subscription id="your-subscription-id"subscriber pubsub_v1.SubscriberClient()subscription_path = subscriber.subscription_path(project_id, subscription_id)avro_schema = Parse("""{"type": "record","name": "Avro"."fields": [{"name": "ProductName","type": "string","default":""},{"name": "SKU","type": "int","default": 0}}def callback(message): print(f"Received message: {message}") reader = DatumReader(avro_schema) decoder = Binary Decoder (message.data) avro_record = reader.read(decoder) message_id=message.message id message.ack() print("Message ID: (message_id}") product_name = avro_record['ProductName'] sku= avro_record['SKU'] print("Product Name: (product_name}") print("SKU: (sku}")subscriber.subscribe(subscription_path, callback=callback)
def callback(message): print("Received message: (message)") data message data message_id=message.message_id message.ack() print("Date (data)") print("Message ID: (message_id)")
Pub/Sub縺?StreamingPull APIを使用してメッセージをリアルタイムで処理する - G-gen Tech Blog
StreamingPull API を使用するとアプリとの間で永続的な藹??方向接続が維持され、Pub/Sub でメッセージが利用可能になるとすぐ縺? pullされる。1 つ縺? pull リクエスト縺? 1 つ縺? pull レスポンスが返る通常縺? 単項 Pull と觸??較すると、高スループット・臀??レイテンシ。必要なメッセージを残す処理をしたりも?GCP側の問題であっても通信が切れた場合は別サーバに軆??縺?なおすためmodifyAckDeadlineも切れ再配信されるバグがある
+++メッセージ縺?TTL (Time-To-Live) はメッセージ臀??持期間(message retention duration) に臀??存メッセージが TTLを超えると、自動的に削除され、Subscriberが藹??信できな縺?なるackDeadlineSeconds (デフォルト縺?10秒、最螟?600秒) を超えたACKのメッセージは再配信されますが、TTL期限を超えた場合は觸??える#TTLを最螟?7日間に設定gcloud pubsub subscriptions update my-subscription message-retention-duration=604800s
DLQ (Dead Letter Queue)
Subscriberが指定回謨?(最螟?100回) メッセージ縺?ACKを行繧?なかった場合に、メッセージを隔離する仕組縺?DLQもサブスクなので期間やTTL設藹??方觸??は同じ
#DLQ topic 作成gcloud pubsub topics create my-dlq-topic
#5回失敗したらDLQ縺?gcloud pubsub subscriptions update my-subscription dead-letter-topic=projects/my-project/topics/my-diq-topic max-delivery-attempts=5
#DLQ subsc作成gcloud pubsub subscriptions create my-diq-subscription--topic-my-diq-topic
#サブスクの詳細確認gcloud pubsub subscriptions describe my-diq-subscription
#DLQメッセージの確認、-auto-ackも付けられるが、gcloud pubsub subscriptions pull my-dlq-subscription -limit=10 [{ "ackld": "Y3g49NfY...=", "message": { "data": "SGVsbG8gd29ybGQ=", #Base64 エンコードされたデー繧? "messageld": "1234567890", "publish Time": "2024-02-18T12:34:56.789Z" } }]
#base64のでコードが必要echo "SGVsbG8gd29ybGQ=" | base64-decode
#ack-idによりackを返しDLQメッセージを削髯?gcloud pubsub subscriptions acknowledge my-diq-subscription--ack-ids=Y3g49NfFY
モニタリン繧? > アラートポリシーから新しいアラートを作成しpubsub.subscription.outstanding_messages を監鐔??対象に選択し、閾値を設藹??するとよい
#DLQ メッセージの再処理をfunctionsに設定 (トピックに入れなおす)from google.cloud import pubsub_v1publisher = pubsub_v1.PublisherClient()topic_path = publisher.topic_path("my-project", "my-topic")
def republish_message(message): future = publisher.publish(topic_path, message.data) print(f"Republished message ID: {future.result()}")
subscriber = pubsub_v1.SubscriberClient()subscription_path = subscriber.subscription_path("my-project", "my-dlq-subscription")
def callback(message): print(f"Received message: {message.data}") republish_message(message) message.ack()
subscriber.subscribe(subscription_path, callback=callback)
/// BANGBOO BLOG /// - GCP runs off functions pubsub on scheduler
Comment (0)
■24/4/27 11:27PM
HELM
Helm Templateについて色々説譏?してみる #kubernetes - QiitaHighway to Helm (zenn.dev)Helmの觸??要縺?Chart(チャート)の臀??り譁? #Docker - QiitaHelm | 一般的な慣軆??
helmはコマンド一発だが生k8sはマニフェストファイルの数だけkubectl apply(delete)を繰り返す必要がある helm upgrade chart名 -f 環藹??豈?yamlファイ繝?
文法覚えるより繰り返した方がええんじゃないhelmはテンプレートフォルダ以臀??がマニフェスのようなも縺? ループ処理が記述可、関数が使える、関数を作れる
helmは基本はテキストの整形用と鐔??える(ヘルパー関数やビルトイン関数を使い外部ファイルを藹??り込んで藹??形したり、変謨?yamlを環藹??yamlで臀??書きし外部の値を使う等で沢山縺?GKEアセットをループ的に生成しようとしている)
helm create <チャート名>templates/ マニフェスト (テンプレート)env/ 自分で臀??成するが環藹??豈?に異なる値の入る変数を記霑?笏?dev.yaml笏?prd.yamlvalues.yaml 繰り返す値軆?? (dev/prd.yamlが優先され上書きされる) helm upgrade-install <release名> <Helmチャートの圧縮ファイル名>
笳?笳?helmテンプレートの文法 (.ファイル名.隕?.子で表す、.はルートオブジェクト、Values縺?valuesオブジェクト、$変謨?:=値、ymlインデントはスペー繧?2縺?)笳?templates/deployment.yaml{{ $env := Values.environment }}{{ $serviceAccountName := Values.serviceAccountName }}image: {{ .Values.deployment.image }}:{{.Values deployment.imageTag }} //nginx:latestserviceAccountName: {{ $serviceAccountName }}-{{ $env }} //sample-sa-dev↑笳?values.yamldeployment: image: nginx imageTag: latestserviceAccountName: sample-sa笳?env/dev.yamlenvironment: dev
窶?values.yaml よりdev/prd.yamlが優先され上書きされ.Valueで使う
笳?笳?helmテンプレートのループ (range~end)笳?templates/es.yamlspec: nodeSets: ((- range .Values.es.nodeSets }} name: {{ .name }} config: node.attr.zone: {{ .zone }} {{- end }}↑笳?values yamies: nodeSets: - name: node-a zone: asia-northeast1-a - name, node-b zone: asia-northeast1-b
笳?笳?helmテンプレート縺?IF (if-end)笳?templates/ingress.yaml((- if .Values.ingress.enabled -))apiVension: networking k8s.io/v1kind: Ingress{(- end }}笳?env/prd.yamlingress: enabled: true笳?env/dev.yamlingress: enabled: false
笳?笳?helmテンプレートの鐔??数蛟? (toYaml、nindentは関謨?)笳?templates/ingress.yamlmetadata: annotations: {{- toYaml .Values.ingress.annotations | nindent 4 }}笳?values.yamlingress: annotations: kubernetes.io/ingress.global-static-ip-name: sample-ip-name kubernetes.io/ingress.class: "gce-internal"
笳?笳?その臀??中括弧内側の前後にダッシ繝? {{--}} をつけることができ、前に臀??けた場合は前の半角スペースを、 後ろにつけた場合は改鐔??コードを藹??り除縺?hoge: {{- $piyo := "aaa" -}} "fuga"/* */で囲まれた部分はコメント構文{{-/* a comment */ -}}
.Releaseでリリースの情報を使用できる
{{ .ReleaseName }}とか{{ .ReleaseNamespace }}
笳?笳?_helpers.tpl
Helm縺?_helpers.tplを使える人になりたい #kubernetes - Qiitahelm create [チャート名]で自動縺?templates ディレクトリ縺?_helpers.tplが作成されるが、 partialsやhelpersと呼ばれる共通のコードブロッ繧? (defineアクションで藹??義されtemplateアクションで呼び出される)や、ヘルパー関数などが定義される。_アンスコ藹??まりのファイルは、他のテンプレートファイル内のどこからでも利用できるという共通部品。 これは内部にマニフェストがないものとみなされる。種饅??としては、values.yamlが差し替え可能な藹??数、ローカル藹??数が定義したTemplateファイル内でのみ使える変数、_helpers.tplはチャート内で自由に使える変謨?笳?templates/_helpers.tpl{{- define "deployment" -}}apiVersion: apps/v1kind: Deploymentmetadata: labels: app: {{.name }} name: {{ .name }}-deploymentspec: replicas: {{ .replicas }} selector: matchLabels: app: {{ .name }} template: metadata: labels: app: {{.name}} spec: containers: - image: {{ .image }} name: {{ .name }}{{- end -}}笳?values.yamlnginx: replicas: "1" name: nginx image: docker.io/nginx:1.25.1httpd: replicas: "3" name: httpd image: docker.io/httpd:2.4.57笳?deployment-nginx.yami{{ include "deployment" .Values.nginx }}
窶?{{ include "deployment" 引謨? }}で関数を呼縺?
笳?笳?英鐔??サイトだともっと情報がある
Helm | Built-in Objects
.Filesなどのビルトインオブジェクトがあったりと、、、
GKEクラスタを作成してお縺?kubectl縺?Argo adminとシークレット作成?brew install argocdArgo cd設藹??ファイルリポジトリ縺?cloneargocd cluster add <context name>argocd repo add <repo url> --ssh-private-key-path ~/.ssh/id_rsaargocd-configuration に設定を追加argocd-insallation に設定を追加argo cd上からinstallationをsyncするargocd login --grpc-web --sso dev-argocd.dev.bb.com
===Argo縺?Settingsにリポジトリ、クラスター、プロジェクト、他縺?Userの設定 アプリ設定縺?helmのパス軆??を指定(Argo内部縺?helm upgradeでな縺?kubectrl applyに藹??觸??しでやってもらえるお作法:helmコマンドのインストール臀??要縺?Argo縺?helm文法が使える)
邱?務省|報道資料|「クラウドの設定ミス対策ガイドブック」の公表 (soumu.go.jp)
Comment (0)
■24/1/14 9:59PM
GKE
モダンか何か知らんが、豚軆??かイカ軆??で十分じゃ
===========
kubectlチートシート | Kubernetes
【K8sセキュリティ】 “とりあえず動縺?”から堅牢な本番環藹??へ移行!10のチェックリスト
フォルダ縺? .py 縺? requirements.txt 縺? .dockerignore 縺? Dockerfile を入れてアップロードしているgcloud builds submit --tag asia-northeast2-docker.pkg.dev/bangboo-prj/xxx/image001
helloworld@bangboo-prj.iam.gserviceaccount.com 作成アクセス元縺?IPを確鐔??するCloud run作成 ドメインないと無理なの縺?LB縺?IAPをあきらめ生成されるURLで十分 Cloud runでアクセス元IPを表示するヤツ run縺?allUsers縺?invokerを削除したらアクセス臀??可になった(この方觸??で管理する)curl http://ifconfig.me/ で十分だったが
GKE
k8sの内驛?NWは通常別途いるがGKEは速い奴が動作
GKEはクラスタ内部縺?DNSでサービス名で名前解決できる
サービス縺?IPとポートは環藹??変数で藹??照藹??
kubectlを使うには、gcloud container cluters get-credentials を打つ藹??要がある
GKE設藹??-クラス繧?:側の設定(IP範囲とかセキュリティとか?) 一闊?/限定公開:外驛?IPを使うか使繧?ないか コントロー繝? プレーン承鐔??済みネットワーク・??CPにアクセスできるセキュリティ軆??蝗?-ワークロード:マニフェストで設定
一般か限定公開か?コントロールプレーンが外驛?IPか?CPがグローバルアクセス可か?承鐔??NWか? 一般公開で承鐔??NWが良いのでは・??簡単だし、 限定公開で使うには・??CPに藹??驛?IPで承鐔??NWでいいのでは・?? NW:default subnet:default 外驛?IPでアクセス許藹?? CP アドレスの軆??蝗? 192.168.1.0/28とか172.16.0.0/28(サブネット重複しない螂?) コントロー繝? プレーン承鐔??済みネットワー繧? home (169.99.99.0/24ではな縺?GCP縺?IPぽい) 限定公開ならnatが要る CP縺? VPC縺?IP範囲は、クラスタ縺? VPC 内のサブネットと重複不可。CPとクラスタ縺? VPC ピアリングを使用してプライベートで通信します グローバルアクセスは別リージョンからという諢?味っぽい、cloud shellから縺?kubectlのためONが良いデフォルト設藹??なら作成したサブネット縺?IP範囲でな縺?クラスタが作られない 面倒ならdefault-defaultで良いかも
サブネットをVPCネットワークを考えて指定する方が偉いかも知れんがdefault asia-northeast2 10.174.0.0/20 の場合 サブネットは asia-northeast2 10.174.27.0/24 とか
ARにあるコンテナからGKEをデプロイが簡単にできるCloud Source Repositories でソース管理gitが下記のようにできる gcloud source repos clone bangboo-registry --project=bangboo-prj cd bangboo-registry git push -u origin masterrun使用中のコンテナがGKE上では臀??手縺?いかない runのコンテナ縺?8080のようだ Dockerfile縺?main.py上ではポートは臀??でもよい仕様だが、runで自動的縺?8080割り当てるようだ それが駄目でありGKEは環藹??変数縺?PORT 8080を指定 CrashLoopBackOff問題がでる https://www.scsk.jp/sp/sysdig/blog/container_security/content_7.htmlデプロイ公開でポート80 ターゲットポート8080に・??クラスタを作成後、ワークロードでデプロイする)
development縺?spec: containers: ports: - containerPort: 8080 を入れる? yamlでな縺?、コンソールで設定時に入れると良い
$ kubectl get allNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/flask-1-service LoadBalancer 10.48.4.134 34.97.169.72 80:32147/TCP 20m
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 これは簡単に臀??手く行縺?、環藹??変謨?PORT8080不要 クイックスタート: アプリを GKE クラスタにデプロイする | Google Kubernetes Engine (GKE) | Google Cloud
ワークロード縺?yaml縺? spec: replicas: 0を保存するとアクセスを止められる
コンフィグマップ:構成ファイル、コマンドライン藹??数、環藹??変数、ポート番号を別途持ってい縺?Podにバインドする(マニフェストに書縺?と抜き出され見れる)シークレット:Base64の値・??(マニフェストに書縺?と抜き出され見れる)甘いの縺?secret mgrを使う方が良い? config map/secretはマニフェストで編集する必要がある(見れるだけと思繧?れる)エディタで鐔??てみる:yamlとかステータスが見れる
■LBに静的IPを振る
GKE 縺? Ingress を使用し縺? Google マネージド SSL 証譏?書を使用した外驛? HTTP(S) ロードバランサを作成する - G-gen Tech Bloghello-app-addressと名付けたIPを藹??得LBのア繝?テーションで設定# ingress.yaml(NW縺?NodePort、RouteapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: hello-ingress namespace: default annotations: kubernetes.io/ingress.global-static-ip-name: hello-app-address # IP networking.gke.io/managed-certificates: hello-managed-cert # 証譏?譖? kubernetes.io/ingress.class: "gce" # 外驛? HTTP(S)LBspec: defaultBackend: service: name: hello-deployment port: number: 8080
GKEでロードバランサ縺?IPを指定するとき、グローバルに藹??するIPアドレスリソースは使用できないので注諢? #GoogleCloud - QiitaService縺?LBはリージョン指定するタイプの静的IPIngressはグローバ繝?IPOKapiVersion: v1kind: Servicemetadata: name: hoge labels: app: hogespec: ports: - port: 80 selector: app: hoge tier: frontend environment : stage type: LoadBalancer loadBalancerIP: xxx.xxx.xxx.xxx
Armor縺?IP制限1)サービスから対象を選択しingressを作成すること縺?LBを追加しArmorも設藹??可閭?2)デフォルトLBに臀??けるに縺?kubectl要りそう、backendconfig.yamlはどこに置縺? Cloud Armor縺?GKE IngressへのアクセスをIPで制御する #GoogleCloud - Qiitaサービス画面縺?kubectrlから# backend-config.yaml を作り kubectl apply -f backend-config.yamlapiVersion: cloud.google.com/v1kind: BackendConfigmetadata: namespace: default name: hello-backend-configspec: securityPolicy: name: "bangboo-armor"
service縺?yamlに臀??記を追加metadata: annotations: cloud.google.com/backend-config: '{"ports": {"8080":"hello-backend-config"}}'↑これでは臀??足する どこで設定状態を見るか?ingress作成し縺?LB縺?Armorつけて、デフォルトLBを削除してみる?
GKEの藹??部からのアクセスを制限するには・?? 限定公開+コントロールプレーンは承鐔??済み軆??でアクセスしKubectlする Armor縺?IP制限+アダプティブ設藹??(Armor縺?LBが要る)
GKE縺?NodePort Type縺?Serviceに対してインターネットアクセス許可する - IK.AM
限定公開クラスタ・??雕?み台サーバ縺?IAPで入りKubectl(承鐔??済縺?NWでの制御縺?IPのみなので危ういらしい)
GKE(Google Kubernetes Engine) Autopilotの限定公開クラスタ縺?IAPを利用してアクセスする | Tech-Tech (nddhq.co.jp)
【GKE/Terraform】外部ネットワークからの全てのアクセスを制限した限定公開クラスタを作成し、雕?み台サーバーからkubectlする (zenn.dev)
コントロールプレーン縺?Pod間で自動FWされない場合もありFirewall要チェッ繧?
Cloud shellのグローバ繝?IPを藹??得しシェルを承鐔??済縺?NWにできないか?>OK curl http://ifconfig.me/
GKE縺?PythonをCron定期実行させたいArgo縺?DAGを実行させたい https://zenn.dev/ring_belle/articles/2c4bbe4365b544Argo縺?GKE縺?CICD(Argoは別ホスト縺?Githubにアクセスし、GKEを操る) https://www.asobou.co.jp/blog/web/argo-cd
サービスアカウント
Workload Identity Federation for GKEの新しい設藹??方觸??を解説 - G-gen Tech Blog
1)繝?ードに軆??付いたサービスアカウントKSAをそのまま使用する(陬?縺?impersonate)
gkeのサービスアカウント縺?IAMサービスアカウントの軆??づけが不要になった
VPCサービスコントロールで管理したい場合impersonate縺?SAを指定できないためWIFが要る2)サービスアカウントのキーを Kubernetes Secret とし縺? GKE クラスタに登録する3)Workload Identity Federationをつかう
GCP 縺? Workload Identity サービスについてのまとめ #GoogleCloud - Qiita
Githubとか外部のサービスから利用するためSAを連携させる
IAM>Workload identity連携画面で設定が見れる窶?KSAは繝?ード単位で設定、Pod単位縺?GCPのリソースにアクセスできるように管理したい?
笳?メ繝?
忙しいときはスケールアウトするが、落ち着き始めるとスケー繝?inし、必要縺?Podも落とされてしまう
safe-to-evict をyml縺?annotationで譏?示して特藹??Podはスケー繝?inしない等にしてお縺?annotations: cluster-autoscaler.kubernetes.io/safe-to-evict:"false"クラスタのオートスケーラ繝? イベントの表遉? | Google Kubernetes Engine (GKE) | Google Cloud
↓
最蟆?Pod数をスケー繝?inした値で固藹??する等も
■Workloads リソー繧?Pod:Workloadsリソースの最蟆?単位ReplicaSet:Podのレプリカを作成し、指定した数縺?Podを維持し続けるリソースです。Deployment:ローリングアップデートやロールバックなどを実現するリソースです。DaemonSet(ReplicaSet亜遞?):各繝?ード縺?Podを一つずつ配置するリソースです。StatefulSet(ReplicaSet亜遞?):ステートフル縺?Podを作成できるリソースです。Job:Podを利用して、指定回数のみ処理を実行させるリソースです。(使い捨縺?Pod)CronJob:Jobを管理するリソースです。Config connector:GKE縺?GCPリソースを調軆??して縺?れるアドオン。Podの藹??加減少にあたり必要なアカウントや権限やPubSub等々を自動作成や管理する。マニフェスト縺?yml縺?cnrm縺?APIを記載したりする(Config connector resource nameの略・??Config Connectorを試してみる (zenn.dev)
■GKE関連の運逕?GKEクラスタ鐔??証ローテーショ繝?30日以内になると自動ローテーションするが危険なので手動が逕?GKEはマイクロサービスのエンドポイントでのサービス觸??供かgcloud api利用が前觸??といえるのでこれ縺?OK1) ローテ開始 (CP縺?IPとクレデンシャ繝?)2) 繝?ード再作成3) APIクライアントを更譁? (クレデンシャル再藹??得)4) ローテ完了 (元IPと旧クレデンシャルの停豁?)クラスタ鐔??証情報をローテーションする | Google Kubernetes Engine (GKE) | Google CloudGKEクラスタ鐔??証ローテーションの考諷?Google Kubernetes Engine のクラスタ鐔??証情報をローテーションするまでに考えたこ縺? - DMM insideセキュア縺?GKEクラス繧?それなりにセキュア縺?GKEクラスタを構築する #GoogleCloud - Qiitaコントロールプレーンの自動アップグレード&IPローテーション・??繝?ードブールの自動アップグレードで死縺?GKEシングルクラスタ觸??成で障害発生してサービス停止しちゃったのでマルチクラスタ觸??成にした隧? (zenn.dev) CPの更新藹??はクレデンを藹??得しなおす必要がある、Argo縺?CICDを組んでいるとクラスタに鐔??証入りなおす必要がある
繝?ードが入れ替繧?りに時間が觸??かり、時間差で問題がでることがあるので注諢?
(More)
Comment (0)
Navi: < 1 | 2 | 3 | 4 >
-Home
-Column [136]
-Europe [9]
-Gadget [79]
-Web [137]
-Bike [4]
@/// BANGBOO BLOG ///

