gcloudコマンド試行(主にコマンドのラインナップの確認)

# お題
[gcloudコマンド](https://cloud.google.com/sdk/gcloud/?hl=ja)について広く浅く確認してみるだけ。

# 環境
### # OS
```
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"
```

### # gcloud
```
$ gcloud version
Google Cloud SDK 217.0.0
app-engine-go 
app-engine-java 1.9.65
app-engine-python 1.9.75
beta 2018.07.16
bigtable 
bq 2.0.34
cbt 
cloud-build-local 
cloud-datastore-emulator 2.0.2
cloud_sql_proxy 
container-builder-local 
core 2018.09.17
docker-credential-gcr 
gsutil 4.34
kubectl 2018.09.17
pubsub-emulator 2018.02.02
```

# 前提
- 自前でGCPプロジェクトは契約済み
- gcloudをローカルで使える状態になっている

＜参考＞
https://cloud.google.com/sdk/docs/?hl=ja

# 実践
## 大枠の理解
### ■gcloud
とりあえず闇雲にコマンド叩く。すると、「こう使え！」とUsageが出る。
もちろん、`gcloud --help` を使った方が詳しく情報が出てくるのだけど、大枠から順繰り知っていきたい時には、いきなり情報が出すぎて少しツラい。

```
$ gcloud
ERROR: (gcloud) Command name argument expected.
Usage: gcloud [optional flags] <group | command>
  group may be           app | auth | beta | bigtable | builds | components |
                         composer | compute | config | container | dataflow |
                         dataproc | datastore | debug | deployment-manager |
                         dns | domains | endpoints | firebase | functions |
                         iam | iot | kms | logging | ml | ml-engine |
                         organizations | projects | pubsub | redis | services |
                         source | spanner | sql | topic
  command may be         docker | feedback | help | info | init | version

For detailed information on this command and its flags, run:
  gcloud --help
```

とりあえず、単に`gcloud`だけでなく後ろに`group may be`ないし`command may be`で列挙されたものを付けるといいらしいことがわかる。

### ■`gcloud <group>`の事例
試しに`gcloud app`とかやると、「こう使え！」とUsageが出てくれる。

```
$ gcloud app
ERROR: (gcloud.app) Command name argument expected.
Usage: gcloud app [optional flags] <group | command>
  group may be           domain-mappings | firewall-rules | instances | logs |
                         operations | regions | services | ssl-certificates |
                         versions
  command may be         browse | create | deploy | describe | open-console |
                         update

For detailed information on this command and its flags, run:
  gcloud app --help
```

ほら、出た。
こうやって掘り下げていけば、大概のことはわかる。↑では`gcloud app`の後ろにまた`group may be`ないし`command may be`で列挙されたものを付けるんだと教えてくれている。
あ、でも、そもそも`gcloud app`って何のサービスに絡んだものなのかわからないという場合はこれだとわからないまま。
その場合は、ちゃんと`gcloud app --help`を叩く。すると、`App Engine`に関するコマンドだと教えてくれる。

```
NAME
    gcloud app - manage your App Engine deployments

SYNOPSIS
    gcloud app GROUP | COMMAND [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    The gcloud app command group lets you deploy and manage your Google App
    Engine apps. These commands replace their equivalents in the appcfg tool.

    App Engine is a platform for building scalable web applications and mobile
    backends. App Engine provides you with built-in services and APIs such as
    NoSQL datastores, memcache, and a user authentication API, common to most
    applications.

    More information on App Engine can be found here:
    https://cloud.google.com/appengine and detailed documentation can be found
    here: https://cloud.google.com/appengine/docs/
　　　　〜省略〜
```

多くの人に使ってもらいたいと考えた時に、こういうUsageやHelpをちゃんと書くのは必須なんだと思わされる。
自分でツール作るときの自戒の念を込めて。

### ■`gcloud <command>`の事例
`gcloud docker`って何だろう？

```
$ gcloud docker
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.

As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: `gcloud docker
--verbosity=error -- pull gcr.io/project-id/my-image`.

See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker
　〜省略〜
```

今、ローカルに入っているdocker clientのバージョンではそのままのコマンドで使えないとのこと。
このコマンド、とても気になるけど、今日のお題からすると掘り下げ過ぎになりそうなので、また今度にしよう。

## `gcloud <group>`の一覧からピックアップして試行
### ■`gcloud app`

```
$ gcloud app
ERROR: (gcloud.app) Command name argument expected.
Usage: gcloud app [optional flags] <group | command>
  group may be           domain-mappings | firewall-rules | instances | logs |
                         operations | regions | services | ssl-certificates |
                         versions
  command may be         browse | create | deploy | describe | open-console |
                         update
```

#### ◆`gcloud app <command>`
- 今現在デプロイ済みのアプリにブラウザを開いてアクセス

```
$ gcloud app browse
Opening [https://【プロジェクトID】.appspot.com] in a new tab in your default browser.
```

- アプリ作成インタラクションに入る

```
$ gcloud app create
You are creating an app for project [【プロジェクトID】].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
<https://cloud.google.com/appengine/docs/locations>.

Please choose the region where you want your App Engine application 
located:

 [1] asia-northeast1 (supports standard and flexible)
 [2] asia-south1   (supports standard and flexible)
 [3] australia-southeast1 (supports standard and flexible)
 [4] europe-west   (supports standard and flexible)
 [5] europe-west2  (supports standard and flexible)
 [6] europe-west3  (supports standard and flexible)
 [7] northamerica-northeast1 (supports standard and flexible)
 [8] southamerica-east1 (supports standard and flexible)
 [9] us-central    (supports standard and flexible)
 [10] us-east1      (supports standard and flexible)
 [11] us-east4      (supports standard and flexible)
 [12] us-west2      (supports standard and flexible)
 [13] cancel
Please enter your numeric choice:  
　〜省略〜
```

- アプリをデプロイ（`app.yaml`ないし`appengine-web.xml`がある場所で叩かないと怒られる）

```
$ gcloud app deploy
ERROR: An app.yaml (or appengine-web.xml) file is required to deploy this directory as an App Engine application. Create an app.yaml file using the directions at https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml (App Engine Flexible Environment) or https://cloud.google.com/appengine/docs/standard/python/config/appref (App Engine Standard Environment) under the tab for your language.
ERROR: (gcloud.app.deploy) [/home/koge] could not be identified as a valid source directory or file.
```

- GAEサービスの詳細

```
$ gcloud app describe
authDomain: gmail.com
codeBucket: staging.【プロジェクトID】.appspot.com
defaultBucket: 【プロジェクトID】.appspot.com
defaultHostname: 【プロジェクトID】.appspot.com
featureSettings:
  splitHealthChecks: true
gcrDomain: asia.gcr.io
id: 【プロジェクトID】
locationId: asia-northeast1
name: apps/【プロジェクトID】
servingStatus: SERVING
```

### ■`gcloud auth`

```
NAME
    gcloud auth - manage oauth2 credentials for the Google Cloud SDK

DESCRIPTION
    The gcloud auth command group lets you grant and revoke authorization to
    Cloud SDK (gcloud) to access Google Cloud Platform. Typically, when
    scripting Cloud SDK tools for use on multiple machines, using gcloud auth
    activate-service-account is recommended.
```

```
$ gcloud auth
ERROR: (gcloud.auth) Command name argument expected.
Usage: gcloud auth [optional flags] <group | command>
  group may be           application-default
  command may be         activate-service-account | configure-docker | list |
                         login | revoke
```

- 認証アカウントのリスト

```
$ gcloud auth list
   Credentialed Accounts
ACTIVE  ACCOUNT
*       【アカウント用メアド】@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
```

### ■`gcloud bigtable`

```
NAME
    gcloud bigtable - manage your Cloud Bigtable storage

DESCRIPTION
    Manage your Cloud Bigtable storage.
```

```
$ gcloud bigtable
ERROR: (gcloud.bigtable) Command name argument expected.
Usage: gcloud bigtable [optional flags] <group>
  group may be           clusters | instances
```

#### clusters操作

```
$ gcloud bigtable clusters
ERROR: (gcloud.bigtable.clusters) Command name argument expected.
Usage: gcloud bigtable clusters [optional flags] <command>
  command may be         describe | list
```

#### instances操作

```
$ gcloud bigtable instances
ERROR: (gcloud.bigtable.instances) Command name argument expected.
Usage: gcloud bigtable instances [optional flags] <command>
  command may be         add-iam-policy-binding | create | delete | describe |
                         get-iam-policy | list | remove-iam-policy-binding |
                         set-iam-policy | update | upgrade
```

### ■`gcloud builds`

```
NAME
    gcloud builds - create and manage builds for Google Cloud Build

DESCRIPTION
    Create and manage builds for Google Cloud Build.
```

```
$ gcloud builds
ERROR: (gcloud.builds) Command name argument expected.
Usage: gcloud builds [optional flags] <command>
  command may be         cancel | describe | list | log | submit
```

- ビルド履歴の一覧

```
$ gcloud builds list
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                     IMAGES                                                    STATUS
89a46d98-be7b-47e4-bdc2-74c13eea5264  2018-09-17T06:10:24+00:00  58S       gs://【プロジェクトID】_cloudbuild/source/1537164620.42-af835aedbe1e48bebf5358711b9cbb70.tgz  gcr.io/【プロジェクトID】/go-webapi-for-gke-study (+1 more)  SUCCESS
df4f7e19-5059-46fa-933c-40fd22bbadd7  2018-09-16T09:08:57+00:00  58S       gs://【プロジェクトID】_cloudbuild/source/1537088915.85-9bd420ed50594b2c89a79a96d205399c.tgz  gcr.io/【プロジェクトID】/go-webapi-for-gke-study (+1 more)  SUCCESS
```

### ■`gcloud compute`

```
NAME
    gcloud compute - create and manipulate Google Compute Engine resources

DESCRIPTION
    The gcloud compute command group lets you create, configure and manipulate
    Google Compute Engine virtual machines.

    With Compute Engine you can create and run virtual machines on Google
    infrastructure. Compute Engine offers scale, performance, and value that
    allows you to easily launch large compute clusters on Google's
    infrastructure.
```

```
$ gcloud compute
ERROR: (gcloud.compute) Command name argument expected.
Usage: gcloud compute [optional flags] <group | command>
  group may be           accelerator-types | addresses | backend-buckets |
                         backend-services | commitments | disk-types | disks |
                         firewall-rules | forwarding-rules | health-checks |
                         http-health-checks | https-health-checks | images |
                         instance-groups | instance-templates | instances |
                         interconnects | machine-types | networks | operations |
                         os-login | project-info | regions | routers | routes |
                         shared-vpc | snapshots | sole-tenancy |
                         ssl-certificates | ssl-policies | target-http-proxies |
                         target-https-proxies | target-instances |
                         target-pools | target-ssl-proxies |
                         target-tcp-proxies | target-vpn-gateways | tpus |
                         url-maps | vpn-tunnels | zones
  command may be         config-ssh | connect-to-serial-port | copy-files |
                         reset-windows-password | scp | sign-url | ssh
```
さすがに[GCE](https://cloud.google.com/compute/docs/concepts?hl=ja)はメニューが豊富。

#### インスタンスのメニュー

```
$ gcloud compute instances
ERROR: (gcloud.compute.instances) Command name argument expected.
Usage: gcloud compute instances [optional flags] <group | command>
  group may be           network-interfaces
  command may be         add-access-config | add-labels | add-metadata |
                         add-tags | attach-disk | create |
                         create-with-container | delete | delete-access-config |
                         describe | detach-disk | get-serial-port-output |
                         list | move | remove-labels | remove-metadata |
                         remove-tags | reset | set-disk-auto-delete |
                         set-machine-type | set-scheduling |
                         set-service-account | simulate-maintenance-event |
                         start | stop | tail-serial-port-output | update |
                         update-access-config | update-container
```

- インスタンスのリスト（GKE試行関連で動かしていたインスタンスがヒット）

```
$ gcloud compute instances list
NAME                                             ZONE               MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
gke-my-cluster-1-min-default-pool-ea807978-8d2t  asia-northeast1-a  f1-micro      true         10.146.0.2   xx.xxx.xxx.xx  RUNNING
gke-my-cluster-1-min-default-pool-ea807978-hpqc  asia-northeast1-a  f1-micro      true         10.146.0.3   xx.xxx.xx.xxx  RUNNING
gke-my-cluster-1-min-default-pool-ea807978-ss7p  asia-northeast1-a  f1-micro      true         10.146.0.4   xx.xxx.xx.xxx  RUNNING
```

　
サブコマンドをある程度さらっていくだけで、けっこうな時間がかかる・・・。
ここからは、基本、DESCRIPTIONの確認とコマンドのリストの確認くらいで済ませよう。

### ■`gcloud config`

```
$ gcloud config
ERROR: (gcloud.config) Command name argument expected.
Usage: gcloud config [optional flags] <group | command>
  group may be           configurations
  command may be         get-value | list | set | unset
```

- 設定のリスト

```
$ gcloud config list
[compute]
region = asia-northeast1
zone = asia-northeast1-a
[core]
account = 【アカウントのメアド】@gmail.com
disable_usage_reporting = False
project = 【プロジェクトID】
```

### ■`gcloud container`

```
NAME
    gcloud container - deploy and manage clusters of machines for running
        containers

DESCRIPTION
    The gcloud container command group lets you create and manage Google
    Kubernetes Engine containers and clusters.

    Kubernetes Engine is a cluster manager and orchestration system for running
    your Docker containers. Kubernetes Engine schedules your containers into
    the cluster and manages them automatically based on requirements you
    define, such as CPU and memory.
```

```
$ gcloud container
ERROR: (gcloud.container) Command name argument expected.
Usage: gcloud container [optional flags] <group | command>
  group may be           builds | clusters | images | node-pools | operations
  command may be         get-server-config
```

### ■`gcloud dataflow`

```
NAME
    gcloud dataflow - manage Google Cloud Dataflow jobs

DESCRIPTION
    The gcloud dataflow command group lets you manage Google Cloud Dataflow
    jobs.

    Cloud Dataflow is a unified programming model and a managed service for
    developing and executing a wide range of data processing patterns including
    ETL, batch computation, and continuous computation.
```

```
$ gcloud dataflow
ERROR: (gcloud.dataflow) Command name argument expected.
Usage: gcloud dataflow [optional flags] <group>
  group may be           jobs
```

```
$ gcloud dataflow jobs
ERROR: (gcloud.dataflow.jobs) Command name argument expected.
Usage: gcloud dataflow jobs [optional flags] <command>
  command may be         cancel | describe | drain | list | run | show
```

### ■`gcloud datastore`

```
NAME
    gcloud datastore - manage your Cloud Datastore indexes

DESCRIPTION
    The gcloud datastore command group lets you create and delete Google Cloud
    Datastore indexes.

    Cloud Datastore is a highly-scalable NoSQL database for your applications.
    Cloud Datastore automatically handles sharding and replication, providing
    you with a highly available and durable database that scales automatically
    to handle your applications' load.
```

```
$ gcloud datastore
ERROR: (gcloud.datastore) Command name argument expected.
Usage: gcloud datastore [optional flags] <group | command>
  group may be           indexes | operations
  command may be         cleanup-indexes | create-indexes | export | import
```

### ■`gcloud deployment-manager`

```
NAME
    gcloud deployment-manager - manage deployments of cloud resources

DESCRIPTION
    The gcloud deployment-manager command group lets you manage the deployment
    of Google Cloud Platform resources using Google Cloud Deployment Manager.

    Google Cloud Deployment Manager allows you to specify all the resources
    needed for your application in a declarative format using YAML. You can
    also use Python or Jinja2 templates to parameterize the configuration and
    allow reuse of common deployment paradigms such as a load balanced,
    auto-scaled instance group.
```

```
$ gcloud deployment-manager 
ERROR: (gcloud.deployment-manager) Command name argument expected.
Usage: gcloud deployment-manager [optional flags] <group>
  group may be           deployments | manifests | operations | resources |
                         types
```

- デプロイメントのリスト

```
$ gcloud deployment-manager deployments list
NAME                   LAST_OPERATION_TYPE  STATUS  DESCRIPTION  MANIFEST                ERRORS
qs-deployment          insert               DONE                 manifest-1537552296004  []
quickstart-deployment  insert               DONE                                         [CONDITION_NOT_MET]
```

### ■`gcloud dns`

```
NAME
    gcloud dns - manage your Cloud DNS managed-zones and record-sets

DESCRIPTION
    The gcloud dns command group lets you create and manage DNS zones and their
    associated records on Google Cloud DNS.

    Cloud DNS is a scalable, reliable and managed authoritative DNS service
    running on the same infrastructure as Google. It has low latency, high
    availability and is a cost-effective way to make your applications and
    services available to your users.
```

```
$ gcloud dns
ERROR: (gcloud.dns) Command name argument expected.
Usage: gcloud dns [optional flags] <group>
  group may be           dns-keys | managed-zones | operations | project-info |
                         record-sets
```

### ■`gcloud domains`

```
NAME
    gcloud domains - manage domains for your Google Cloud projects

DESCRIPTION
    The gcloud domains command group lets you view and manage your custom
    domains for use across Google projects.
```

```
$ gcloud domains 
ERROR: (gcloud.domains) Command name argument expected.
Usage: gcloud domains [optional flags] <command>
  command may be         list-user-verified | verify
```

### ■`gcloud endpoints`

```
NAME
    gcloud endpoints - create, enable and manage API services

SYNOPSIS
    gcloud endpoints GROUP [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    Google Service Management is an infrastructure service of Google Cloud
    Platform that manages other APIs and services, including Google's own Cloud
    Platform services and their APIs, and services created using Google Cloud
    Endpoints.
```

```
$ gcloud endpoints 
ERROR: (gcloud.endpoints) Command name argument expected.
Usage: gcloud endpoints [optional flags] <group>
  group may be           configs | operations | services
```

### ■`gcloud firebase`

```
NAME
    gcloud firebase - work with Google Firebase

SYNOPSIS
    gcloud firebase GROUP [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    To view all options available for using Firebase Test Lab, run:
```

```
$ gcloud firebase 
ERROR: (gcloud.firebase) Command name argument expected.
Usage: gcloud firebase [optional flags] <group>
  group may be           test
```

### ■`gcloud functions`

```
NAME
    gcloud functions - manage Google Cloud Functions

DESCRIPTION
    Manage Google Cloud Functions.
```

```
$ gcloud functions 
ERROR: (gcloud.functions) Command name argument expected.
Usage: gcloud functions [optional flags] <group | command>
  group may be           event-types | logs | regions
  command may be         call | delete | deploy | describe | list
```

### ■`gcloud iam`

```
NAME
    gcloud iam - manage IAM service accounts and keys

DESCRIPTION
    The gcloud iam command group lets you manage Google Cloud Identity & Access
    Management (IAM) service accounts and keys.

    Cloud IAM authorizes who can take action on specific resources, giving you
    full control and visibility to manage cloud resources centrally. For
    established enterprises with complex organizational structures, hundreds of
    workgroups and potentially many more projects, Cloud IAM provides a unified
    view into security policy across your entire organization, with built-in
    auditing to ease compliance processes.
```

```
$ gcloud iam
ERROR: (gcloud.iam) Command name argument expected.
Usage: gcloud iam [optional flags] <group | command>
  group may be           roles | service-accounts
  command may be         list-grantable-roles | list-testable-permissions
```

### ■`gcloud kms`

```
NAME
    gcloud kms - manage cryptographic keys in the cloud

SYNOPSIS
    gcloud kms GROUP | COMMAND [GCLOUD_WIDE_FLAG ...]

DESCRIPTION
    The gcloud kms command group lets you generate, use, rotate and destroy
    Google Cloud KMS keys.

    Cloud KMS is a cloud-hosted key management service that lets you manage
    encryption for your cloud services the same way you do on-premises. You can
    generate, use, rotate and destroy AES256 encryption keys. Cloud KMS is
    integrated with IAM and Cloud Audit Logging so that you can manage
    permissions on individual keys, and monitor how these are used. Use Cloud
    KMS to protect secrets and other sensitive data which you need to store in
    Google Cloud Platform.
```

```
$ gcloud kms
ERROR: (gcloud.kms) Command name argument expected.
Usage: gcloud kms [optional flags] <group | command>
  group may be           keyrings | keys | locations
  command may be         decrypt | encrypt
```

### ■`gcloud logging`

```
NAME
    gcloud logging - manage Stackdriver Logging

DESCRIPTION
    Manage Stackdriver Logging.
```

```
$ gcloud logging
ERROR: (gcloud.logging) Command name argument expected.
Usage: gcloud logging [optional flags] <group | command>
  group may be           logs | metrics | resource-descriptors | sinks
  command may be         read | write
```

### ■`gcloud organizations`

```
NAME
    gcloud organizations - create and manage Google Cloud Platform
        Organizations

DESCRIPTION
    The gcloud organizations group lets you create and manage Cloud
    Organizations. Google Cloud Platform resources form a hierarchy with
    Organizations at the root. Organizations contain projects, and Projects
    contain the remaining Google Cloud Platform resources.
```

```
$ gcloud organizations
ERROR: (gcloud.organizations) Command name argument expected.
Usage: gcloud organizations [optional flags] <command>
  command may be         add-iam-policy-binding | describe | get-iam-policy |
                         list | remove-iam-policy-binding | set-iam-policy
```

### ■`gcloud projects`

```
NAME
    gcloud projects - create and manage project access policies

DESCRIPTION
    The gcloud projects group lets you create and manage IAM policies for
    projects on the Google Cloud Platform. Resources are organized
    hierarchically and assigned to a particular project. A Project resource is
    required to use Google Cloud Platform, and forms the basis for creating,
    enabling and using all Cloud Platform services, managing APIs, enabling
    billing, adding and removing collaborators, and managing permissions.
```

```
$ gcloud projects
ERROR: (gcloud.projects) Command name argument expected.
Usage: gcloud projects [optional flags] <command>
  command may be         add-iam-policy-binding | create | delete | describe |
                         get-iam-policy | list | remove-iam-policy-binding |
                         set-iam-policy | undelete | update
```

### ■`gcloud pubsub`

```
NAME
    gcloud pubsub - manage Cloud Pub/Sub topics and subscriptions

DESCRIPTION
    Manage Cloud Pub/Sub topics and subscriptions.
```

```
$ gcloud pubsub
ERROR: (gcloud.pubsub) Command name argument expected.
Usage: gcloud pubsub [optional flags] <group>
  group may be           subscriptions | topics
```

#### topic

```
$ gcloud pubsub topics 
ERROR: (gcloud.pubsub.topics) Command name argument expected.
Usage: gcloud pubsub topics [optional flags] <command>
  command may be         create | delete | describe | list |
                         list-subscriptions | publish
```

#### subscriptions

```
$ gcloud pubsub subscriptions
ERROR: (gcloud.pubsub.subscriptions) Command name argument expected.
Usage: gcloud pubsub subscriptions [optional flags] <command>
  command may be         ack | create | delete | describe | list |
                         modify-message-ack-deadline | modify-push-config | pull
```

### ■`gcloud redis`

```
NAME
    gcloud redis - manage Cloud Memorystore Redis resources

DESCRIPTION
    Manage Cloud Memorystore Redis resources.
```

```
$ gcloud redis
ERROR: (gcloud.redis) Command name argument expected.
Usage: gcloud redis [optional flags] <group>
  group may be           instances | operations | regions | zones
```

### ■`gcloud services`

```
NAME
    gcloud services - list, enable and disable APIs and services

DESCRIPTION
    The gcloud services command group lets you manage your project's access to
    services provided by Google and third parties.
```

```
$ gcloud services
ERROR: (gcloud.services) Command name argument expected.
Usage: gcloud services [optional flags] <group | command>
  group may be           operations
  command may be         disable | enable | list
```

- サービスのリスト

```
$ gcloud services list 
NAME                               TITLE
appengine.googleapis.com           App Engine Admin API
bigquery-json.googleapis.com       BigQuery API
cloudapis.googleapis.com           Google Cloud APIs
cloudbuild.googleapis.com          Cloud Build API
clouddebugger.googleapis.com       Stackdriver Debugger API
cloudtrace.googleapis.com          Stackdriver Trace API
compute.googleapis.com             Compute Engine API
container.googleapis.com           Kubernetes Engine API
containerregistry.googleapis.com   Container Registry API
datastore.googleapis.com           Cloud Datastore API
deploymentmanager.googleapis.com   Google Cloud Deployment Manager V2 API
dns.googleapis.com                 Google Cloud DNS API
firebaserules.googleapis.com       Firebase Rules API
firestore.googleapis.com           Cloud Firestore API
iap.googleapis.com                 Cloud Identity-Aware Proxy API
logging.googleapis.com             Stackdriver Logging API
monitoring.googleapis.com          Stackdriver Monitoring API
oslogin.googleapis.com             Cloud OS Login API
pubsub.googleapis.com              Cloud Pub/Sub API
replicapool.googleapis.com         Compute Engine Instance Group Manager API
replicapoolupdater.googleapis.com  Google Compute Engine Instance Group Updater API
resourceviews.googleapis.com       Google Compute Engine Instance Groups API
servicemanagement.googleapis.com   Service Management API
serviceusage.googleapis.com        Service Usage API
sourcerepo.googleapis.com          Cloud Source Repositories API
sql-component.googleapis.com       Google Cloud SQL
storage-api.googleapis.com         Google Cloud Storage JSON API
storage-component.googleapis.com   Google Cloud Storage
```

### ■`gcloud source`

```
NAME
    gcloud source - cloud git repository commands

DESCRIPTION
    The gcloud source group lets you manipulate git repositories within a
    Google Cloud project.
```

```
$ gcloud source --eh
ERROR: (gcloud.source) unrecognized arguments: --eh (did you mean '-h'?)
Usage: gcloud source [optional flags] <group>
  group may be           repos
```

- リポジトリのリスト

```
$ gcloud source repos  list 
REPO_NAME                PROJECT_ID       URL
go-webapi-for-gke-study  【プロジェクトID】  ssh://git@github.com/sky0621/go-webapi-for-gke-study.git
```

### ■`gcloud spanner`

```
NAME
    gcloud spanner - command groups for Cloud Spanner

DESCRIPTION
    Command groups for Cloud Spanner.
```

```
$ gcloud spanner 
ERROR: (gcloud.spanner) Command name argument expected.
Usage: gcloud spanner [optional flags] <group>
  group may be           databases | instance-configs | instances | operations
```

### ■`gcloud sql`

```
NAME
    gcloud sql - create and manage Google Cloud SQL databases

DESCRIPTION
    The gcloud sql command group lets you create and manage Google Cloud SQL
    databases.

    Cloud SQL is a fully-managed database service that makes it easy to set up,
    maintain, manage, and administer your relational MySQL databases in the
    cloud.
```

```
$ gcloud sql
ERROR: (gcloud.sql) Command name argument expected.
Usage: gcloud sql [optional flags] <group | command>
  group may be           backups | databases | export | flags | import |
                         instances | operations | ssl | ssl-certs | tiers |
                         users
  command may be         connect
```

### ■`gcloud topic`

```
NAME
    gcloud topic - gcloud supplementary help

DESCRIPTION
    The gcloud topic command group provides supplementary help for topics not
    directly associated with individual commands.

    More information on gcloud topic can be found by running:

        $ gcloud topic [TOPIC_NAME]
```

```
$ gcloud topic
ERROR: (gcloud.topic) Command name argument expected.
Usage: gcloud topic <topic>
  topic may be           arg-files | cli-trees | command-conventions |
                         configurations | datetimes | escaping | filters |
                         formats | gcloudignore | projections | resource-keys |
                         startup
```

# まとめ
本当にただラインナップを眺めただけになってしまった。
今後、少しずつ各サービスの機能について調べる、ないしチュートリアルこなしていく過程で上記のコマンドも掘り下げていこう。