Contenu connexe
Similaire à Shakr - Container CI/CD with Google Cloud Platform (20)
Shakr - Container CI/CD with Google Cloud Platform
- 16. .travis.yml
sudo: required
services:
- docker
before_script:
- docker build -t videobox:$TRAVIS_BUILD_NUMBER .
- docker images
script:
- docker run videobox:$TRAVIS_BUILD_NUMBER bundle exec rubocop
- docker run videobox:$TRAVIS_BUILD_NUMBER bundle exec rspec
- openssl aes-256-cbc -K $encrypt_key -iv $encrypt_iv -in service_account.json.enc
-out service_account.json -d
- docker login -e docker@sha.kr -u _json_key -p "$(cat service_account.json)" https://us.gcr.io
- docker tag videobox:$TRAVIS_BUILD_NUMBER gcr.io/shakr/videobox:$TRAVIS_BUILD_NUMBER
- docker push gcr.io/shakr/videobox:$TRAVIS_BUILD_NUMBER
notifications:
slack: "..."
- 21. script:
- docker run videobox:$TRAVIS_BUILD_NUMBER bundle exec rubocop
- docker run videobox:$TRAVIS_BUILD_NUMBER bundle exec rspec
- 22. Container Registry
- docker login -e docker@sha.kr -u _json_key
-p "$(cat service_account.json)"
https://us.gcr.io
- docker tag videobox:$TRAVIS_BUILD_NUMBER
gcr.io/shakr/videobox:$TRAVIS_BUILD_NUMBER
- docker push gcr.io/shakr/videobox:$TRAVIS_BUILD_NUMBER
https://cloud.google.com/container-registry/docs/advanced-authentication
- 28. gcloud CLI
$ gcloud docker pull gcr.io/google_appengine/nodejs
Using 'pull gcr.io/google_appengine/nodejs' for DOCKER_ARGS.
Using default tag: latest
latest: Pulling from google_appengine/nodejs
a3ed95caeb02: Pull complete
..
Digest: sha256:a7fcfb84b..
Status: Downloaded newer image for gcr.io/google_appengine/
nodejs:latest
- 29. gcloud CLI
$ docker login -e docker@sha.kr -u _json_key
-p "$(cat service_account.json)"
https://us.gcr.io
$ docker pull gcr.io/my_gcp_project/private_image:latest
https://cloud.google.com/container-registry/docs/advanced-authentication
- 34. pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: Videobox
labels:
name: videobox
spec:
containers:
- name: videobox
image: gcr.io/shakr/videobox:xxx
imagePullPolicy: IfNotPresent
env:
- name: RACK_ENV
value: production
restartPolicy: Always
dnsPolicy: default
- 54. Chromium OS Verified Boot
Active-passive
systemd
cloud-init
Google
Container-Optimized OS (BETA)
- 55. gcloud CLI
$ gcloud compute instances create gci-instance-test
--image-project google-containers
--image-family gci-stable
--zone asia-northeast1-a
--machine-type n1-standard-1
- 56. cloud-init
$ gcloud compute instances create gci-instance-test
--image-project google-containers
--image-family gci-stable
--zone asia-northeast1-a
--machine-type n1-standard-1
--metadata-from-file user-data=cloud-init.yml
- 57. cloud-init.yml
#cloud-config
users:
- name: myservice
uid: 2000
write_files:
- path: /etc/systemd/system/myservice.service
permissions: 0644
owner: root
content: |
[Unit]
Description=Start a simple docker container
[Service]
ExecStartPre=/usr/share/google/dockercfg_update.sh
ExecStart=/usr/bin/docker run --rm -u 2000 --net=host --name=myservice -e RACK_ENV=production -p 80:80
gcr.io/project/myservice:latest
ExecStop=/usr/bin/docker stop myservice
ExecStopPost=/usr/bin/docker rm myservice
runcmd:
- systemctl daemon-reload
- systemctl enable myservice.service
- systemctl start myservice.service