跳到主要內容

發表文章

目前顯示的是 2022的文章

如何使用 Cloud VPN 跨專案存取私有 GKE 叢集 - 使用 Classic VPN

  如何使用 Cloud VPN 跨專案存取私有 GKE 叢集 - 使用 Classic VPN Classic VPN 使用 Route Based 的方式, 跟據 Routing Table 裡設定的路由規則, 將封包轉送到指定的目的地 以下示範在 project 01, project 02 各自建立 GKE, VM, 接著透過 Classic VPN 讓 us-east4 的 VM 可以 access project 01 下 us-central1 的 private GKE 叢集 Step 1. 建立 VPN Gateway 需要建立一個 VPN Gateway 作為 VPC 網路對外溝通的橋樑 variable "p1_project_id" {     default = "project-01" } variable "p1_region" {     default = "us-central1" } resource "google_compute_vpn_gateway" "p1_vpn_gw" {   project   = var.p1_project_id   region    = var.p1_region   name      = "vpn-gw"   network = "projects/ ${var.p1_ project_id } /global/networks/default" } Step 2. 建立 Routing 規則 需要一個對外 IP, 讓外部流量可以流進 VPN Gateway resource "google_compute_address" "p1_vpn_ip" {   project      = var.p1_project_id   region       = var.p1_region   name         = "p1-vpn-ip"   address_type = "EXTERNAL" } 建立 Routing Rule, 將 Gateway

私有 GKE 叢集整合 ArgoCD 實現 GitOps 自動部署

  私有 GKE 叢集整合 ArgoCD 實現 GitOps 自動部署 前言 為了提升安全性, 企業通常會採用 Private GKE 的叢集架構, 只允許在內網裡存取 Control Plane, 在這種情況下, 若要部署資源到叢集裡, 除了額外再架一個跳板機使用 kubectl 去操作之外, 另一個方式是走 Pull-based 的 GitOps 流程, 安裝一個 Agent 在 GKE 叢集裡,  定時地去掃指定Git Repository 內的 k8s 資源檔, 並將差異同步到 GKE 叢集中 以下介紹如何使用 ArgoCD 來快速地實現以上的流程 Step 1. 安裝 ArgoCD $gcloud container clusters get-credentials cluster --zone us-central1 --project=stage $kubectl create ns argocd $kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml Step 2. Patch ArgoCD Server Service 指派外部 IP 因為在接下來的步驟會需要連線到 ArgoCD Server 上操作, 所以必須先  patch 一個 Load Balancer type 的 Service 給 ArgoCD Server 使它能對外溝通 $kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer","loadBalancerIP":"10.51.0.12"},"metadata":{"annotations":{"networking.gke.io/load-balancer-type":"Internal"}}}' 以上範例使用 Internal Load Balancer 的 Service, 

快速建立私有 GCE Instance 整合 Cloud NAT

  快速建立私有 GCE Instance 並整合 Cloud NAT 前言 私有 GCE Instance 能夠減少被駭客攻擊的機會,  因為在做網路配置的時候, 不會特別分派外部 IP 給這類型的 VM, 所有存取 VM 的行為都必須走內網, 但也因為沒有對外的 IP, 所以 VM 裡也沒辦法透過網際網路去下載並且使用第三方的套件 解法: 整合 Cloud NAT 透過 Cloud NAT 位址轉譯的功能, 將 VM 的內部 IP 對應到一組共用的對外 IP 使用 Terraform 建立 VPC, Subnet, GCE VM variable "project" {   default = "test"    } variable "network_name" {   default = "net-123"    } variable "subnet_name" {   default = "subnet-123"    } resource "google_compute_network" "vpc_network" {   project                 = var.project   name                    = var.network_name   auto_create_subnetworks = false } resource "google_compute_subnetwork" "vpc_subnet" {   project                 = var.project   name          = var.subnet_name   ip_cidr_range = "10.51.0.0/23"   region        = "us-central1"   network       = google_compute_network.vpc_network.id } resource "google_service_account

如何使用 Cloud VPN 跨專案存取私有 GKE 叢集

  如何跨專案存取私有 GKE 叢集  在 GKE 的 Control Plane 沒有提供外部 IP  的情況下,  維運人員若想要操作 GKE  則必需走 VPN 的方式才能訪問到 Control Plane  的 API Server 以下示範, 如何在不同的專案底下建立跳板機跟 GKE 叢集,  並透過 VPN 的方式在跳板機上去操作另一個專案下的 GKE 叢集 在 Project A 建立 VPC #1 variable "gke_project" {   default = "prj-1" } variable "gke_network_name" {   default = "net-1" } variable "gke_subnet_name" {   default = "subnet-1" } resource "google_compute_network" "gke_vpc_network" {   project                 = var.gke_project   name                    = var.gke_network_name   auto_create_subnetworks = false } resource "google_compute_subnetwork" "gke_vpc_subnet" {   project                 = var.gke_project   name          = var.gke_subnet_name   ip_cidr_range = "10.51.0.0/23"   region        = "us-central1"   network       = google_compute_network.gke_vpc_network.id } 在 Project B 建立 VPC #2 v variable "proxy_project" {   default