20200611 MSTechNight #10 メモ
Azure Kubernetes×スタートアップ+Build速報 - MSTechNight #10
- 2020/6/11 19:00 -
- https://msdevjp.connpass.com/event/176216/
- https://www.youtube.com/watch?v=QSdNY1hCBrk&feature=youtu.be
Build 2020 最新情報 ~ コンテナ関連アップデート ~
- セキュリティ向上機能が大幅増
- コンテナレジストリ(ACR) update
- Diagnostic Logs (診断ログ)
- Private link & Firewall
- Custom key
- AKS update
AKSと始める未来のソフトウェアのCI/CD
- 未来のソフトウェアのCI/CD
- 会社のミッション
- 要件に応じてシステムを作っていくのは破綻してしまう
- k8s 導入意義
- マルチプロバイダ
- 再利用性
- 負荷の軽減
- AKS 評判がいい??
- CDに力を入れた(CNCF LandScapeより)
- Argo CD
- GitOps ツール
- 構築が楽
- helm, kustomize などマニフェストのサポート
- AKS 利用が大変だった
- (情報が無い)
- Terraform 使った
- ベストプラクティスが無い
- シークレット情報もGit管理したい
- sealed secret
- 監視
- Azure Monitor
- Terraform で構築
- その他
- stern
- weave scope
- trivy
- rollbar
- descheduler
- k8s
- 学習コストがとにかく高い
- AKS
- Azure Monitor 便利
- サポート情報が少ない
- 小規模でのk8s利用はあり
その他
- ACI も使えるよ
- AAD Pod Identity
- AKS AMA
- 公式ドキュメント充実
- 最大ノード数
- 運用管理の面で100ノードのクラスタは勧められない
- メンテ性の低下、再構築、アップデート、ログなどが大変
- 50がMAXか。30くらいがベスト
- コスト感
- VMのサイズと数がポイント
- AKS構築のベストプラクティス
- CLIで十分
- Azure関連なら、ARM
- それ以外のプロビジョニングの場合、Terraform(すべて解決)
- https://docs.microsoft.com/ja-jp/azure/aks/best-practices
- セキュリティ定義はオプション必須
- k8s バージョンアップ
- バージョンアップツールが安定してきた
- AKSとk8sの定義、マニフェストで分離、もしくはPolicyで
- k8s クラスタは壊れる、という前提で運用すること重要
- Argo
- Flux
- シールドシークレット
k8s ハンズオンをなぞってみる
KubernetesのわかりやすいハンズオンがQiitaにあったので試してみた。
数時間で完全理解!わりとゴツいKubernetesハンズオン!! https://qiita.com/Kta-M/items/ce475c0063d3d3f36d5d
手順上、以下でエラーとなるため、変更して作業する必要あり
Docker for Desktop での「下準備」は以下の手順で対応:
kustomizationのBASEファイルが削除されているため、記載されている手順ではエラーとなる。 https://github.com/kubernetes/ingress-nginx/issues/5164
以下の手順で動作確認
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml
ハンズオン結果1
以下、「サンプルアプリをデプロイ」から「Ingress」確認までの履歴
$ kubectl apply -f examples/guestbook/ $ kubectl apply -f guestbook-ingress.yaml $ kubectl get ingress NAME HOSTS ADDRESS PORTS AGE guestbook-ingress * 80 16s $ kubectl get ingress NAME HOSTS ADDRESS PORTS AGE guestbook-ingress * localhost 80 26s $ curl http://localhost <html ng-app="redis"> <head> <title>Guestbook</title> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script> <script src="controllers.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.0/ui-bootstrap-tpls.js"></script> </head> <body ng-controller="RedisCtrl"> <div style="width: 50%; margin-left: 20px"> <h2>Guestbook</h2> <form> <fieldset> <input ng-model="msg" placeholder="Messages" class="form-control" type="text" name="input"><br> <button type="button" class="btn btn-primary" ng-click="controller.onRedis()">Submit</button> </fieldset> </form> <div> <div ng-repeat="msg in messages track by $index"> {{msg}} </div> </div> </div> </body> </html> $ kubectl get all NAME READY STATUS RESTARTS AGE pod/frontend-6cb7f8bd65-fxc6b 1/1 Running 0 7m38s pod/redis-master-7db7f6579f-7cmgr 1/1 Running 0 7m38s pod/redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 7m38s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/frontend NodePort 10.111.147.241 <none> 80:30228/TCP 7m38s service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21d service/redis-master ClusterIP 10.111.102.221 <none> 6379/TCP 7m38s service/redis-slave ClusterIP 10.102.8.228 <none> 6379/TCP 7m38s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/frontend 1/1 1 1 7m38s deployment.apps/redis-master 1/1 1 1 7m38s deployment.apps/redis-slave 1/1 1 1 7m38s NAME DESIRED CURRENT READY AGE replicaset.apps/frontend-6cb7f8bd65 1 1 1 7m38s replicaset.apps/redis-master-7db7f6579f 1 1 1 7m38s replicaset.apps/redis-slave-5bdcfd74c7 1 1 1 7m38s $ kubectl get deploy -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR frontend 1/1 1 1 35m php-redis gcr.io/google-samples/gb-frontend:v4 app=guestbook,tier=frontend redis-master 1/1 1 1 35m master k8s.gcr.io/redis:e2e app=redis,role=master,tier=backend redis-slave 1/1 1 1 35m slave gcr.io/google_samples/gb-redisslave:v1 app=redis,role=slave,tier=backend $ kubectl describe deploy frontend Name: frontend Namespace: default CreationTimestamp: Sat, 06 Jun 2020 17:40:37 +0900 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"frontend","namespace":"default"},"spec":{"replicas":1,"se... Selector: app=guestbook,tier=frontend Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: app=guestbook tier=frontend Containers: php-redis: Image: gcr.io/google-samples/gb-frontend:v4 Port: 80/TCP Host Port: 0/TCP Requests: cpu: 100m memory: 100Mi Environment: GET_HOSTS_FROM: dns Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: frontend-6cb7f8bd65 (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 36m deployment-controller Scaled up replica set frontend-6cb7f8bd65 to 1 $ kubectl get rs -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR frontend-6cb7f8bd65 1 1 1 38m php-redis gcr.io/google-samples/gb-frontend:v4 app=guestbook,pod-template-hash=6cb7f8bd65,tier=frontend redis-master-7db7f6579f 1 1 1 38m master k8s.gcr.io/redis:e2e app=redis,pod-template-hash=7db7f6579f,role=master,tier=backend redis-slave-5bdcfd74c7 1 1 1 38m slave gcr.io/google_samples/gb-redisslave:v1 app=redis,pod-template-hash=5bdcfd74c7,role=slave,tier=backend $ kubectl describe rs frontend-6cb7f8bd65 Name: frontend-6cb7f8bd65 Namespace: default Selector: app=guestbook,pod-template-hash=6cb7f8bd65,tier=frontend Labels: app=guestbook pod-template-hash=6cb7f8bd65 tier=frontend Annotations: deployment.kubernetes.io/desired-replicas: 1 deployment.kubernetes.io/max-replicas: 2 deployment.kubernetes.io/revision: 1 Controlled By: Deployment/frontend Replicas: 1 current / 1 desired Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: app=guestbook pod-template-hash=6cb7f8bd65 tier=frontend Containers: php-redis: Image: gcr.io/google-samples/gb-frontend:v4 Port: 80/TCP Host Port: 0/TCP Requests: cpu: 100m memory: 100Mi Environment: GET_HOSTS_FROM: dns Mounts: <none> Volumes: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 38m replicaset-controller Created pod: frontend-6cb7f8bd65-fxc6b $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES frontend-6cb7f8bd65-fxc6b 1/1 Running 0 40m 10.1.0.26 docker-desktop <none> <none> redis-master-7db7f6579f-7cmgr 1/1 Running 0 40m 10.1.0.25 docker-desktop <none> <none> redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 40m 10.1.0.27 docker-desktop <none> <none> $ kubectl describe pod frontend-6cb7f8bd65-fxc6b Name: frontend-6cb7f8bd65-fxc6b Namespace: default Priority: 0 Node: docker-desktop/192.168.65.3 Start Time: Sat, 06 Jun 2020 17:40:37 +0900 Labels: app=guestbook pod-template-hash=6cb7f8bd65 tier=frontend Annotations: <none> Status: Running IP: 10.1.0.26 IPs: IP: 10.1.0.26 Controlled By: ReplicaSet/frontend-6cb7f8bd65 Containers: php-redis: Container ID: docker://78eb908cd313b23b1ccaa425d9c1966701ddccf643197a9ae2d232342910923c Image: gcr.io/google-samples/gb-frontend:v4 Image ID: docker-pullable://gcr.io/google-samples/gb-frontend@sha256:d44e7d7491a537f822e7fe8615437e4a8a08f3a7a1d7d4cb9066b92f7556ba6d Port: 80/TCP Host Port: 0/TCP State: Running Started: Sat, 06 Jun 2020 17:46:36 +0900 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 100Mi Environment: GET_HOSTS_FROM: dns Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-q8xgg (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: default-token-q8xgg: Type: Secret (a volume populated by a Secret) SecretName: default-token-q8xgg Optional: false QoS Class: Burstable Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 40m default-scheduler Successfully assigned default/frontend-6cb7f8bd65-fxc6b to docker-desktop Normal Pulling 40m kubelet, docker-desktop Pulling image "gcr.io/google-samples/gb-frontend:v4" Normal Pulled 34m kubelet, docker-desktop Successfully pulled image "gcr.io/google-samples/gb-frontend:v4" Normal Created 34m kubelet, docker-desktop Created container php-redis Normal Started 34m kubelet, docker-desktop Started container php-redis $ kubectl logs frontend-6cb7f8bd65-fxc6b AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.1.0.26. Set the 'ServerName' directive globally to suppress this message AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.1.0.26. Set the 'ServerName' directive globally to suppress this message [Sat Jun 06 08:46:36.740260 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.20 configured -- resuming normal operations [Sat Jun 06 08:46:36.740298 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' 10.1.0.24 - - [06/Jun/2020:08:48:21 +0000] "GET / HTTP/1.1" 200 770 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15" 10.1.0.24 - - [06/Jun/2020:08:48:21 +0000] "GET /controllers.js HTTP/1.1" 200 704 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15" 10.1.0.24 - - [06/Jun/2020:08:48:21 +0000] "GET /guestbook.php?cmd=get&key=messages HTTP/1.1" 200 189 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15" $ kubectl get svc -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR frontend NodePort 10.111.147.241 <none> 80:30228/TCP 42m app=guestbook,tier=frontend kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21d <none> redis-master ClusterIP 10.111.102.221 <none> 6379/TCP 42m app=redis,role=master,tier=backend redis-slave ClusterIP 10.102.8.228 <none> 6379/TCP 42m app=redis,role=slave,tier=backend $ kubectl describe svc frontend Name: frontend Namespace: default Labels: app=guestbook tier=frontend Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"guestbook","tier":"frontend"},"name":"frontend","namespa... Selector: app=guestbook,tier=frontend Type: NodePort IP: 10.111.147.241 LoadBalancer Ingress: localhost Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 30228/TCP Endpoints: 10.1.0.26:80 Session Affinity: None External Traffic Policy: Cluster Events: <none> $ kubectl get ing NAME HOSTS ADDRESS PORTS AGE guestbook-ingress * localhost 80 42m $ kubectl describe ing guestbook-ingress Name: guestbook-ingress Namespace: default Address: localhost Default backend: default-http-backend:80 (<none>) Rules: Host Path Backends ---- ---- -------- * / frontend:80 (10.1.0.26:80) Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"guestbook-ingress","namespace":"default"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"frontend","servicePort":80},"path":"/"}]}}]}} Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal CREATE 42m nginx-ingress-controller Ingress default/guestbook-ingress Normal UPDATE 42m nginx-ingress-controller Ingress default/guestbook-ingress
ハンズオン結果2
「スケールさせてみよう」から「お片付け」まで
$ kubectl apply -f k8s-examples/guestbook/frontend-deployment.yaml deployment.apps/frontend configured $ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-6cb7f8bd65-fxc6b 1/1 Running 0 146m frontend-6cb7f8bd65-w4hcb 1/1 Running 0 31s redis-master-7db7f6579f-7cmgr 1/1 Running 0 146m redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 146m $ kubectl delete pod frontend-6cb7f8bd65-w4hcb pod "frontend-6cb7f8bd65-w4hcb" deleted $ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-6cb7f8bd65-4klft 1/1 Running 0 9s frontend-6cb7f8bd65-fxc6b 1/1 Running 0 147m redis-master-7db7f6579f-7cmgr 1/1 Running 0 147m redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 147m $ kubectl apply -f k8s-examples/guestbook/frontend-deployment.yaml deployment.apps/frontend configured $ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-6cb7f8bd65-4klft 1/1 Running 0 105s frontend-6cb7f8bd65-fxc6b 1/1 Running 0 149m frontend-769bc557fc-fnjvv 0/1 ContainerCreating 0 2s redis-master-7db7f6579f-7cmgr 1/1 Running 0 149m redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 149m $ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-6cb7f8bd65-4klft 0/1 Terminating 0 107s frontend-6cb7f8bd65-fxc6b 1/1 Running 0 149m frontend-769bc557fc-fnjvv 1/1 Running 0 4s frontend-769bc557fc-wt86j 0/1 ContainerCreating 0 2s redis-master-7db7f6579f-7cmgr 1/1 Running 0 149m redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 149m $ kubectl get pod NAME READY STATUS RESTARTS AGE frontend-769bc557fc-fnjvv 1/1 Running 0 6s frontend-769bc557fc-wt86j 1/1 Running 0 4s redis-master-7db7f6579f-7cmgr 1/1 Running 0 149m redis-slave-5bdcfd74c7-hbdmp 1/1 Running 0 149m $ kubectl rollout history deployments frontend deployment.apps/frontend REVISION CHANGE-CAUSE 1 <none> 2 <none> $ kubectl rollout history deployments frontend --revision=2 deployment.apps/frontend with revision #2 Pod Template: Labels: app=guestbook pod-template-hash=769bc557fc tier=frontend Containers: php-redis: Image: gcr.io/google-samples/gb-frontend:v4 Port: 80/TCP Host Port: 0/TCP Requests: cpu: 100m memory: 120Mi Environment: GET_HOSTS_FROM: dns Mounts: <none> Volumes: <none> $ kubectl rollout undo deployments frontend --to-revision=1 deployment.apps/frontend rolled back $ kubectl rollout history deployments frontend deployment.apps/frontend REVISION CHANGE-CAUSE 2 <none> 3 <none> $ kubectl get pods --namespace=kube-system NAME READY STATUS RESTARTS AGE coredns-5644d7b6d9-857g6 1/1 Running 0 21d coredns-5644d7b6d9-hvjc5 1/1 Running 0 21d etcd-docker-desktop 1/1 Running 0 21d kube-apiserver-docker-desktop 1/1 Running 0 21d kube-controller-manager-docker-desktop 1/1 Running 0 21d kube-proxy-2kqkm 1/1 Running 0 21d kube-scheduler-docker-desktop 1/1 Running 0 21d storage-provisioner 1/1 Running 1 21d vpnkit-controller 1/1 Running 0 21d $ kubectl delete -f k8s-examples/guestbook/ deployment.apps "frontend" deleted service "frontend" deleted deployment.apps "redis-master" deleted service "redis-master" deleted deployment.apps "redis-slave" deleted service "redis-slave" deleted $ kubectl delete -f guestbook-ingress.yaml ingress.extensions "guestbook-ingress" deleted $ kubectl get namespace NAME STATUS AGE default Active 21d docker Active 21d ingress-nginx Active 3h42m kube-node-lease Active 21d kube-public Active 21d kube-system Active 21d $ kubectl delete namespace ingress-nginx namespace "ingress-nginx" deleted
20200529 OpenShift Meetup Tokyo #9 メモ
情報
- OpenShift Meetup Tokyo #9 - DevOps/GitOps編
- https://openshift.connpass.com/event/174426/
- 2020/5/29 17:30 - 19:00
セッションより
Kubernetes で実践するクラウドネイティブ DevOps
- 資料
- GitOps がモヤモヤしていたが、ストンとわかる説明
メモ
- 実践GitOps の説明はこれからの検討の参考になる
- プロダクションレディ Pods+ / Production-Ready Pods Plus
- 入門 Prometheus
- https://speakerdeck.com/superbrothers
GitOpsを実現するArgoCDとterraform
メモ
- GitOpsで嬉しいと感じたこと
- アプリ側でインフラリソースを作れる
- 同じような構成のリソース群をすぐに作れる
- Gitに履歴が残るので監査にもなる
- コードを見ればシステムの構成を把握できる
その他
20200528 Prometheus Meetup Tokyo #4 メモ
情報
- Prometheus Meetup Tokyo #4
- https://prometheus.connpass.com/event/175547/
- 2020/5/28 19:30 - 21:00
セッションから
Unit Testing for Prometheus Rules
- 資料
- ルールのテストの大変さ
Survey and Short Dive Prometheus
- 資料
- 色々と検討を進めているマイクロサービスの監視について、非常に助かる内容であった
メモ
- クラウドネイティブの説明
- 可観測性の説明
- 監視システムの構成要素
- 動的監視の課題
- k8s Operator
- 監視設定の自動化の方向性
- ArgoCD
- GitOps
- 5/29 のOpenShift-JP #9 参照
- Kustomize
- YAML での扱いやすさ
- ArgoCD
LT 1 自宅のKubernetesクラスタを気軽にkube-prometheusでモニタリング
- 資料
- kustomize オススメ
その他
20200527 Kubernetes Meetup Tokyo #3メモ
情報
- Kubernetes Meetup Tokyo #31
- 2020/5/27 19:00 -
- https://k8sjp.connpass.com/event/175030/
セッション
いま、Kubernetes 好きのあなたにこそ伝えたい Amazon ECS 〜 違いに学ぶ Kubernetes の考え方・使い方 〜
メモ
- 資料
- 前振り
- 違いからみるk8s
- リモートワーク環境を整えよう!
- ECS コントロールプレインは共有している(全部のユーザで共有)
- このためクラスタ名を書く必要がある
- どちらもやりたいことはコンテナの実行
- 最終的には
docker run
する
- 最終的には
- ECS の方が対象が狭い
- k8sのマスターはマニフェスト
- ECS は、AWS側
- GitOps が変わる
- ロギング
- k8s はDevとOps は分離させようとしている
- ECS は、Dev側によっていると思う
- 質問
- LB の違和感
- 鼻からingressって感じ
- ECS からFargate そっちはデーモンモードはない(運用コストは落とせる)
- 仮想マシンをモダナイズするのは大変
- EKSにおけるFargateとEC2(既存のVM)の比較
- LB の違和感
感想
- 丁寧に違いを説明してくれて、よく理解できた
入門!ClusterAPI 〜k8sクラスターもk8s APIで管理したい〜
メモ
感想
Helmfile: Superchage your deployment pipeline
メモ
- 資料
- helm は宣言的ではない
- [質問] Argo CDやFlux CDを使ってGitOpsしていたらhelmもサポートされているので不要に思いましたが、helmfileと組み合わせて使うメリットをもう少し教えて下さい
- 操作ミスを防ぐことができる
感想
- こんなツール知らなかった
- 使えそう
20200522 SRE Lounge #12 メモ
SRE Lounge #12
- 2020/5/22 19:30 - 21:00
- https://sre-lounge.connpass.com/event/175323/
Alerting Strategy for Self-contained Team
メモ
- SREチームとして自己完結化を目指している
- SLI/SLOの先 -> アラート重要
- SRE NEXT の続編の発表
- SREがボトルネックにはなりたくない
- 責任分解点
- Infra Study でそのような話があったがそんなのはなくていいのでは?
- ボーダーレスだ!(納得)
- アラート
- アラートのポリシーがない、複雑怪奇となっていた
- ポリシーを定義し直し
- いらないアラートを削除(リファクタリング)
- DATADOG で可観測
- アラートのレビュー(大事)
- SLOのためにアラートはある
- 各チームは各チーム別のアラートとすべき
- まだSLOアラートはきていない
- WebDevはSLOだけ見ている
感想など
- 責任分解点は、気になっていたが、現場感が少し見えた気がする
- 一緒にやっていこうよ、ということ
- レビューによって通知アラートを消したのは
- 同じようなアラートとか
- CPU系は消した(他で見れる)
- 本番でくるアラートは対処できない
- できるのであれば、先に直しておけよ!となる≒普通の障害対応
- オンライン教育サービス
- 大変だった。。
- リモートの方がコミュニケーション取れている
- SREが見ている監視項目(そういうのを見ているのか!)
Security / AuditabilityをSREチームの成果指標に加えた話
メモ
- Security中心の事例紹介
- 試行錯誤中(の発表とのこと)
- マッチングアプリとしての責任重要
- 課題
- 責任所在があいまい
- 局所的なセキュリティ対策だった
- セキュリティチームを発足した
- セキュリティの対応は、先延ばしとなることが多い
- 見えないことが多い
- SREとセキュリティチーム間で目標を明確にする
- アラートインジケータを明確にした
- 設定や定義の標準化を進めた
- セキュリティアラートはちゃんと「確認」する必要がある
- SRE本のSLO設計に繋がる
- セキュリティツール
- 専用の社内ツール
- セキュリティパッチの自動化は断念した
- 今日話したSLIは、SRE間と握るもの
- KPIは別に持っている
感想など
- 避難訓練、どれだけできているのだろう
- セキュリティの監視は大変である
- KPI->サービス->システム
SLI, SLOとカオスエンジニアリング、そしてオブザーバビリティ
メモ
- https://blog.newrelic.co.jp/
- モダンなシステムにSLI/SLOを設定するときのベストプラクティス
- New Relic流、オンコールとインシデント対応の成功への道
- 時間外におこるon-call を計測する
- New Relic AIの一般提供を発表: 多忙なDevOpsチームおよびSREチームのためのAIOpsとインシデントレスポンスの高速化
- 5分で学ぶ: カオスエンジニアリングの説明書
感想など
- https://www.deepl.com/ja/translator
- マルチクラウドってあまり使われていない印象
- ROI的に見合わないとか
- 参考資料(Twitterログから)ZOZOTOWN マルチクラウド構想とその検討停止について
- APがインフラと密結合だと、SLOが分離できない
20200520 Infra Study Meetup #2「VM時代の開発とCloud Native時代の開発」メモ
基本情報
- Infra Study Meetup #2「VM時代の開発とCloud Native時代の開発」
- 2020/5/20 19:30 - 22:00
- https://forkwell.connpass.com/event/173289/
- https://twitter.com/search?q=%23InfraStudy
青山さん
LT
LT1「Scheduling Profile が実現する Pod 配置戦略の最前線」
LT2「IaCだからこそ必要なドキュメントとは?」
- 不要なDocを無くしたいが
- 必要なもの