$npx -y skills add chaterm/terminal-skills --skill gcloudGoogle Cloud CLI 操作
| 1 | # Google Cloud CLI 操作 |
| 2 | |
| 3 | ## 概述 |
| 4 | GCP 资源管理、GKE、Cloud Functions 等技能。 |
| 5 | |
| 6 | ## 配置与认证 |
| 7 | |
| 8 | ```bash |
| 9 | # 初始化配置 |
| 10 | gcloud init |
| 11 | |
| 12 | # 登录 |
| 13 | gcloud auth login |
| 14 | gcloud auth application-default login # 应用默认凭证 |
| 15 | |
| 16 | # 服务账号认证 |
| 17 | gcloud auth activate-service-account --key-file=key.json |
| 18 | |
| 19 | # 查看配置 |
| 20 | gcloud config list |
| 21 | gcloud config configurations list |
| 22 | |
| 23 | # 设置项目 |
| 24 | gcloud config set project my-project |
| 25 | |
| 26 | # 设置区域 |
| 27 | gcloud config set compute/region us-central1 |
| 28 | gcloud config set compute/zone us-central1-a |
| 29 | |
| 30 | # 创建配置 |
| 31 | gcloud config configurations create my-config |
| 32 | gcloud config configurations activate my-config |
| 33 | ``` |
| 34 | |
| 35 | ## Compute Engine |
| 36 | |
| 37 | ### 实例管理 |
| 38 | ```bash |
| 39 | # 列出实例 |
| 40 | gcloud compute instances list |
| 41 | |
| 42 | # 创建实例 |
| 43 | gcloud compute instances create my-instance \ |
| 44 | --zone=us-central1-a \ |
| 45 | --machine-type=e2-medium \ |
| 46 | --image-family=ubuntu-2204-lts \ |
| 47 | --image-project=ubuntu-os-cloud \ |
| 48 | --boot-disk-size=50GB |
| 49 | |
| 50 | # 启动/停止实例 |
| 51 | gcloud compute instances start my-instance --zone=us-central1-a |
| 52 | gcloud compute instances stop my-instance --zone=us-central1-a |
| 53 | |
| 54 | # 删除实例 |
| 55 | gcloud compute instances delete my-instance --zone=us-central1-a |
| 56 | |
| 57 | # SSH 连接 |
| 58 | gcloud compute ssh my-instance --zone=us-central1-a |
| 59 | |
| 60 | # 执行命令 |
| 61 | gcloud compute ssh my-instance --zone=us-central1-a --command="uptime" |
| 62 | ``` |
| 63 | |
| 64 | ### 磁盘管理 |
| 65 | ```bash |
| 66 | # 列出磁盘 |
| 67 | gcloud compute disks list |
| 68 | |
| 69 | # 创建磁盘 |
| 70 | gcloud compute disks create my-disk \ |
| 71 | --zone=us-central1-a \ |
| 72 | --size=100GB \ |
| 73 | --type=pd-ssd |
| 74 | |
| 75 | # 附加磁盘 |
| 76 | gcloud compute instances attach-disk my-instance \ |
| 77 | --disk=my-disk \ |
| 78 | --zone=us-central1-a |
| 79 | |
| 80 | # 创建快照 |
| 81 | gcloud compute disks snapshot my-disk \ |
| 82 | --zone=us-central1-a \ |
| 83 | --snapshot-names=my-snapshot |
| 84 | ``` |
| 85 | |
| 86 | ### 防火墙 |
| 87 | ```bash |
| 88 | # 列出防火墙规则 |
| 89 | gcloud compute firewall-rules list |
| 90 | |
| 91 | # 创建规则 |
| 92 | gcloud compute firewall-rules create allow-http \ |
| 93 | --allow=tcp:80 \ |
| 94 | --source-ranges=0.0.0.0/0 \ |
| 95 | --target-tags=http-server |
| 96 | |
| 97 | # 删除规则 |
| 98 | gcloud compute firewall-rules delete allow-http |
| 99 | ``` |
| 100 | |
| 101 | ## Cloud Storage |
| 102 | |
| 103 | ```bash |
| 104 | # 列出桶 |
| 105 | gsutil ls |
| 106 | |
| 107 | # 创建桶 |
| 108 | gsutil mb gs://my-bucket |
| 109 | gsutil mb -l us-central1 gs://my-bucket |
| 110 | |
| 111 | # 上传文件 |
| 112 | gsutil cp file.txt gs://my-bucket/ |
| 113 | gsutil cp -r ./dir gs://my-bucket/ |
| 114 | |
| 115 | # 下载文件 |
| 116 | gsutil cp gs://my-bucket/file.txt ./ |
| 117 | gsutil cp -r gs://my-bucket/dir ./ |
| 118 | |
| 119 | # 同步目录 |
| 120 | gsutil rsync -r ./local-dir gs://my-bucket/prefix/ |
| 121 | gsutil rsync -d -r ./local-dir gs://my-bucket/prefix/ # 删除多余文件 |
| 122 | |
| 123 | # 删除 |
| 124 | gsutil rm gs://my-bucket/file.txt |
| 125 | gsutil rm -r gs://my-bucket/dir/ |
| 126 | |
| 127 | # 删除桶 |
| 128 | gsutil rb gs://my-bucket |
| 129 | |
| 130 | # 设置公开访问 |
| 131 | gsutil acl ch -u AllUsers:R gs://my-bucket/file.txt |
| 132 | |
| 133 | # 生成签名 URL |
| 134 | gsutil signurl -d 1h key.json gs://my-bucket/file.txt |
| 135 | ``` |
| 136 | |
| 137 | ## GKE 集群 |
| 138 | |
| 139 | ```bash |
| 140 | # 列出集群 |
| 141 | gcloud container clusters list |
| 142 | |
| 143 | # 创建集群 |
| 144 | gcloud container clusters create my-cluster \ |
| 145 | --zone=us-central1-a \ |
| 146 | --num-nodes=3 \ |
| 147 | --machine-type=e2-medium |
| 148 | |
| 149 | # 获取凭证 |
| 150 | gcloud container clusters get-credentials my-cluster --zone=us-central1-a |
| 151 | |
| 152 | # 调整节点数 |
| 153 | gcloud container clusters resize my-cluster \ |
| 154 | --zone=us-central1-a \ |
| 155 | --num-nodes=5 |
| 156 | |
| 157 | # 升级集群 |
| 158 | gcloud container clusters upgrade my-cluster \ |
| 159 | --zone=us-central1-a \ |
| 160 | --master |
| 161 | |
| 162 | # 删除集群 |
| 163 | gcloud container clusters delete my-cluster --zone=us-central1-a |
| 164 | ``` |
| 165 | |
| 166 | ## Cloud Functions |
| 167 | |
| 168 | ```bash |
| 169 | # 列出函数 |
| 170 | gcloud functions list |
| 171 | |
| 172 | # 部署函数 |
| 173 | gcloud functions deploy my-function \ |
| 174 | --runtime=nodejs18 \ |
| 175 | --trigger-http \ |
| 176 | --allow-unauthenticated \ |
| 177 | --entry-point=handler \ |
| 178 | --source=./ |
| 179 | |
| 180 | # 调用函数 |
| 181 | gcloud functions call my-function --data='{"name":"World"}' |
| 182 | |
| 183 | # 查看日志 |
| 184 | gcloud functions logs read my-function |
| 185 | |
| 186 | # 删除函数 |
| 187 | gcloud functions delete my-function |
| 188 | ``` |
| 189 | |
| 190 | ## Cloud Run |
| 191 | |
| 192 | ```bash |
| 193 | # 部署服务 |
| 194 | gcloud run deploy my-service \ |
| 195 | --image=gcr.io/my-project/my-image \ |
| 196 | --platform=managed \ |
| 197 | --region=us-central1 \ |
| 198 | --allow-unauthenticated |
| 199 | |
| 200 | # 列出服务 |
| 201 | gcloud run services list |
| 202 | |
| 203 | # 查看服务 |
| 204 | gcloud run services describe my-service --region=us-central1 |
| 205 | |
| 206 | # 更新服务 |
| 207 | gcloud run services update my-service \ |
| 208 | --region=us-central1 \ |
| 209 | --memory=512Mi \ |
| 210 | --concurrency=80 |
| 211 | |
| 212 | # 删除服务 |
| 213 | gcloud run services delete my-service --region=us-central1 |
| 214 | ``` |
| 215 | |
| 216 | ## IAM 管理 |
| 217 | |
| 218 | ```bash |
| 219 | # 列出服务账号 |
| 220 | gcloud iam service-accounts list |
| 221 | |
| 222 | # 创建服务账号 |
| 223 | gcloud iam service-accounts create my-sa \ |
| 224 | --display-name="My Service Account" |
| 225 | |
| 226 | # 创建密钥 |
| 227 | gcloud iam service-accounts keys create key.json \ |
| 228 | --iam-account=my-sa@my-project.iam.gserviceaccount.com |
| 229 | |
| 230 | # 添加角色 |
| 231 | gcloud projects add-iam-policy-binding my-project \ |
| 232 | --member="serviceAccount:my-sa@my-project.iam.gserviceaccount.com" \ |
| 233 | --role="roles/storage.admin" |
| 234 | |
| 235 | # 查看 IAM 策略 |
| 236 | gcloud projects get-iam-policy my-project |
| 237 | ``` |
| 238 | |
| 239 | ## 常见场景 |
| 240 | |
| 241 | ### 场景 1:批量操作实例 |
| 242 | ```bash |
| 243 | # 停止所有实例 |
| 244 | gcloud compute instances list --format="value(name,zone)" | \ |
| 245 | while read name zone; do |
| 246 | gcloud compute instances stop "$name" --zone="$zone" --async |
| 247 | done |
| 248 | ``` |
| 249 | |
| 250 | ### 场景 2:日志查询 |
| 251 | ```bash |
| 252 | # 查看日志 |
| 253 | gcloud logging read "resource.type=gce_instance" --limit=100 |
| 254 | |
| 255 | # 按时间范围 |
| 256 | gcloud logging read "timestamp>=\"2024-01-01T00:00:00Z\"" --limit=100 |
| 257 | |
| 258 | # 按严重级别 |
| 259 | gcloud logging read "severity>=ERROR" --limit=100 |
| 260 | ``` |
| 261 | |
| 262 | ### 场景 3:导出计费数据 |
| 263 | ```bash |
| 264 | # 设置计费导出 |
| 265 | gcloud beta billing acc |