Slackã®BotãGKEã使ã£ã¦ãããã¤ãã
å æ¥ãRubotyãk8sã§åããæã¾ã§ããã¾ãããæ¬¡ã®ã¹ãããã¨ãã¦Google Kubernetes Engine(GKE)ã使ã£ã¦ã¯ã©ã¹ã¿ãæ§ç¯ãããããããããã¤ãã¾ãã Google Cloud SDKã®ä½¿ç¨ã¯åãã¦ã§ããã®ã§ã»ããã¢ããããå§ãã¾ããã
ããã·ã¥ãã¼ãããk8sã¯ã©ã¹ã¿ãGUIã§ä½æãã¾ããã¯ã©ã¹ã¿ä½æã«ã¯è¨å®å¤ãããããããã¾ããããä»åã¯ç¹ã«ãããã使ãã¾ããã
ã¯ã©ã¹ã¿ãshellãããããããã«ãæ¥ç¶ãã¾ãã
$ gcloud container clusters get-credentials bot --zone asia-northeast1-a --project your-cluster-name
試ãã«ãpodsã表示ããããã¨ãã¾ãããã¾ã ä½ããã¦ãªãã®ã§è¡¨ç¤ºããã¾ããã
$ kubectl get pods No resources found.
ä»åããããã¤ããã®ã¯ååè¨äºã§æ§ç¯ããRubotyãããã§ããååã¯Docker hubã«imageãç½®ãã¾ããããä»åã¯Google Container Registryã¸imageãpushãç´ãã¾ããã
KubernetesでRubotyを動かして自動復旧を味わう - keisuke-tの日記
$ gcloud docker -- push asia.gcr.io/your-cluster-name/ruboty:latest
åæã«ãk8sãããã§ã¹ããã¡ã¤ã«ãæ¸ãæãã¦ãã¾ããä»åã¯ãDeploymentãå®ç¾©ãã¦ãã¾ãã Deploymentã¯ã¢ããªã±ã¼ã·ã§ã³ãããã¤ã®åºæ¬åä½ã¨ãªããªã½ã¼ã¹ã§ãResplicaSetã¯åã仿§ã®Podã®ã¬ããªã«æ°ã管çãå¶å¾¡ãããªã½ã¼ã¹ã§ãããDeployementã¯ReplicaSetã管çãå¶å¾¡ãããªã½ã¼ã¹ã§ãã
apiVersion: apps/v1 kind: Deployment metadata: name: ruboty labels: app: ruboty spec: replicas: 1 selector: matchLabels: app: ruboty template: metadata: labels: app: ruboty spec: containers: - name: ruboty image: asia.gcr.io/kube-test-224908/ruboty:latest imagePullPolicy: IfNotPresent
æºåã¯ã§ããã®ã§ãpodsãç«ã¡ä¸ãã¾ãã
$ kubectl apply -f bot_deploy.yaml
kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE ruboty 1 1 1 1 7h
kubectl get pods --watch NAME READY STATUS RESTARTS AGE ruboty-586bd8888-lg7fg 1/1 Running 0 7h
大æåã§ãã
botãçãã¦ã¾ããã
podsãåé¤ãããã¨ãã¦ããèªå復æ§ã§åèµ·åããã®ã§è½ã¨ãæã¯Deployementãã¨è½ã¨ãã¾ãããã
$ kubectl delete -f bot_deploy.yml
æå¾ã«
ãããã¤ã¾ã§ã®ããã¼ããããªã«ã·ã³ãã«ã ã¨ã¯æãã¾ããã§ãããGCPã®ããã·ã¥ãã¼ããã確èªã§ãããã¼ãããããã®ç¶æ ãã¨ã¦ãåãããããã§ããããã®è¨äºã§ã¯æ¸ãã¦ã¾ãããããããã®ã¹ã±ã¼ãªã³ã°ããããã¤æã®ãã¼ãªã³ã°ã¢ãããã¼ããé åçãªã®ã§æ¬¡åã¯ãã¦ã§ããµã¼ãã¹ã®ãããã¤ãéç¨ã«ä½¿ã£ã¦ã¿ããã¨æãã¾ããã