最后更新2022/03/14
今天的室验是deploy app,和以前的好像有点重复,再来一遍吧,加深印象,另外还有些新操作。
还是先下一个git repository,这个里面包括了python service main.py,requirements.txt,Dockerfile,还有html之类的,我要做的就是搞一个app.yaml,里面很简单,只有一行,设置一行:
runtime: python 3.7
Docker build test就不做了,因为都是git里面的,指定docker就好,提示一下build 之后run test,会启动docker,service 8080端口,这时候在cloud shell上沿菜单里有一个app test,就是在>_旁边,一个窗口样的图标,可以直接打开一个新web page连8080,当然你也可以copy docker提示的service link
下面先要create一个app,可以理解为app engine的engine:
gcloud app create --region=us-central
然后deploy我们的app(根据app.yaml和当前目录的Dockerfile控制)到这个engine:
gcloud app deploy --version=one --quiet
可能提示一些版本问题,但不用管,deploy之后就可以到app engine的页面去查看了。这里有点乱,第一次到app engine页面要你get start,似乎是首次进入必须的,其实我们已经有啦!我就点了service,能看到已经有一个default 的instance,正如我所需要的,web检查,啥都正常。
再下面做些更改,修改main.py输出,重新deploy一遍,注意参数选择no-promote,这个意思是只deploy出去,但不publish,这样你能看到两个instance,只有一个在服务,也就是以前的version one,如果要访问新的version two,则要访问另一个单独的link:
gcloud app deploy --version=two --no-promote --quiet
再翻到app engine->versions,能看到两个version,在右侧顶行菜单,有start,stop等操作,注意有一个竖三点,标识更多操作,里面有split,可以让我们将对外服务分流,找这个隐藏split命令也找了半天,找到就没什么了,挺有意思的功能。
下一个室验是kubenetes,先建个kubenetes cluster,然后连接过去。建立时间有点长,可能要10分钟,连接命令也是竖三点里面,在kubenetes cluster instance行最后,可以用命令或gcloud console直接生成页面。
查看一下:
kubectl get node
三个node都在,运行正常。下一步要做个config.yaml文件,控制build,具体内容看实验说明,不贴了。注意生成的image,要替换config.yaml中的< your image here >,就是
就deploy这个docker,还是一条命令:
kubectl apply -f config.yaml
查看一下:
kubectl get pods
kubectl get service
get pods如果马上执行,能看到执行过程,先出来一个创建container的instance,然后是其它node run等等。
然后验证,不知道为啥我的没成功,很可能是改的main.py中输出kubernetes少了一个r,不管了,反正自己亲测web能访问的。
最后一个室验,cloud run,同样修改了main.py输出,然后一条命令:
gcloud build submit --tag gcr.io/$DEVSHELL_PROJECT_ID/cloud-run-image:v0.1 .
注意不要少了最后一个点.
然后到cloud run菜单,create service,又很难找,cloud run在service子菜单里。
然后选择我们刚才生成的那个image,autoscale设置6(default 100),authentication设置un。。。表示internets谁都可以访问
最后create,这个应该很快,但也要几分钟。
OK,室验都完成。
另外还有要注意刚做完操作,dashboard等等页面要等一会儿才会更新(可用),经常出现与预期不一样的初始化界面等等,这个不用管他,喝杯茶,走一圈,回来刷一下就好了。