Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Següent revisió
Revisió prèvia
info:cursos:pue:devops:sesion16 [06/04/2019 00:45] – creat mateinfo:cursos:pue:devops:sesion16 [06/04/2019 23:18] (actual) – [Sesión 16 prometheus on kubernetes] mate
Línia 1: Línia 1:
 = Sesión 16 prometheus on kubernetes = Sesión 16 prometheus on kubernetes
 +  * [[https://linuxhint.com/kubernetes_operator/]]
 == google cloud == google cloud
   * ''gcloud config set compute/zone europe-west1-b'' <- (https://cloud.google.com/compute/docs/regions-zones/)   * ''gcloud config set compute/zone europe-west1-b'' <- (https://cloud.google.com/compute/docs/regions-zones/)
Línia 31: Línia 32:
     namespace: kube-system     namespace: kube-system
 </code> </code>
-  * obtener password: ''gcloud container clusters describe bootcamp --zone europe-west1-b --project caramel-era-236111''+  * obtener password: ''gcloud container clusters describe bootcamp --zone europe-west1-b --<project_id>''
     * igual no necesario     * igual no necesario
   * inicializamos helm''helm init --service-account helm''   * inicializamos helm''helm init --service-account helm''
   * ''k get deploy,svc tiller-deploy -n kube-system''   * ''k get deploy,svc tiller-deploy -n kube-system''
 +    * tiller: parte servidor de helm, con la que interactuamos
   * creamos para deployar: ''helm create samplechart''   * creamos para deployar: ''helm create samplechart''
   * deployamos: ''helm install --name helm-test ./samplechart --set service.type=LoadBalancer''   * deployamos: ''helm install --name helm-test ./samplechart --set service.type=LoadBalancer''
   * vemos el deploy: ''k get svc''   * vemos el deploy: ''k get svc''
-  * comprobación de nuestro NGINX desplegado: ''curl 34.76.180.246''+  * comprobación de nuestro NGINX desplegado: ''curl <ip_publica>''
  
 == prometheus == prometheus
   * [[https://itnext.io/kubernetes-monitoring-with-prometheus-in-15-minutes-8e54d1de2e13]]   * [[https://itnext.io/kubernetes-monitoring-with-prometheus-in-15-minutes-8e54d1de2e13]]
 +  * instalación a través de helm: ''helm install stable/prometheus-operator --name prometheus-operator --namespace monitoring''
 +  * verificamos: ''kubectl get pods -n monitoring''
 +  * prometheus: ''kubectl port-forward -n monitoring prometheus-prometheus-operator-prometheus-0 9090'' -> http://localhost:9090
 +  * grafana: ''kubectl port-forward $(kubectl get  pods --selector=app=grafana -n  monitoring --output=jsonpath="{.items..metadata.name}") -n monitoring  3000'' -> http://localhost:3000 (admin:prom-operator)
 +  * alertmanager: ''kubectl port-forward -n monitoring alertmanager-prometheus-operator-alertmanager-0 9093'' -> http://localhost:9093
 +
 +== deploy traefik
 +para usar con el deploy del WHO (necesitamos la IP asignada por el uso de **nip.io**)
 +<code yaml; traefik.yaml>
 +---
 +apiVersion: v1
 +kind: ServiceAccount
 +metadata:
 +  name: traefik-ingress-controller
 +  namespace: kube-system
 +---
 +kind: Deployment
 +apiVersion: extensions/v1beta1
 +metadata:
 +  name: traefik-ingress-controller
 +  namespace: kube-system
 +  labels:
 +    k8s-app: traefik-ingress-lb
 +spec:
 +  replicas: 1
 +  selector:
 +    matchLabels:
 +      k8s-app: traefik-ingress-lb
 +  template:
 +    metadata:
 +      labels:
 +        k8s-app: traefik-ingress-lb
 +        name: traefik-ingress-lb
 +    spec:
 +      serviceAccountName: traefik-ingress-controller
 +      terminationGracePeriodSeconds: 60
 +      containers:
 +      - image: traefik
 +        name: traefik-ingress-lb
 +        ports:
 +        - name: http
 +          containerPort: 80
 +        - name: admin
 +          containerPort: 8080
 +        args:
 +        - --api
 +        - --kubernetes
 +        - --logLevel=INFO
 +        - --metrics
 +        - --metrics.prometheus
 +        - --web
 +        - --web.metrics
 +        - --web.metrics.prometheus
 +---
 +kind: Service
 +apiVersion: v1
 +metadata:
 +  name: traefik-ingress-service
 +  namespace: kube-system
 +spec:
 +  selector:
 +    k8s-app: traefik-ingress-lb
 +  ports:
 +    - protocol: TCP
 +      port: 80
 +      name: web
 +    - protocol: TCP
 +      port: 8080
 +      name: admin
 +  type: LoadBalancer
 +</code>
 +<code yaml; rbac.yaml>
 +---
 +kind: ClusterRoleBinding
 +apiVersion: rbac.authorization.k8s.io/v1beta1
 +metadata:
 +  name: traefik-ingress-controller
 +roleRef:
 +  apiGroup: rbac.authorization.k8s.io
 +  kind: ClusterRole
 +  name: traefik-ingress-controller
 +subjects:
 +- kind: ServiceAccount
 +  name: traefik-ingress-controller
 +  namespace: kube-system
 +---
 +kind: ClusterRole
 +apiVersion: rbac.authorization.k8s.io/v1beta1
 +metadata:
 +  name: traefik-ingress-controller
 +rules:
 +  - apiGroups:
 +      - ""
 +    resources:
 +      - services
 +      - endpoints
 +      - secrets
 +    verbs:
 +      - get
 +      - list
 +      - watch
 +  - apiGroups:
 +      - extensions
 +    resources:
 +      - ingresses
 +    verbs:
 +      - get
 +      - list
 +      - watch
 +</code>
 +
 +  * nos asignamos admin para poder hacer el rbac: ''kubectl create clusterrolebinding cluster-role-user --clusterrole=cluster-admin --user=<user_email_gcloud>''
 +  * ''k deploy -f rbac.yaml -n kube-system''
 +  * ''k deploy -f traefik.yaml -n kube-system''
 +  * ''k get svc -n kube-system'' : obtener IP pública -> [[http://<ip>:8080]] (panel admin)
 +    * [[http://<ip>:8080/metrics]]
 +
 +== deploy WHO 
 +  * ''k create namespace who''
 +  * ''k apply -f whoami-deployment.yaml -n who''
 +  * ''k apply -f whoami-ingress.yaml -n who''
 +  * ''k apply -f whoami-service.yaml -n who''
 +  * ''k apply -f whoareyou.yaml -n who''
 +  * ''k get svc,deply -n who''
 +
 +=== otro
 +<code yaml; otro-who.yaml>
 +apiVersion: extensions/v1beta1
 +kind: Deployment
 +metadata:
 +  name: whoami-deployment
 +spec:
 +  replicas: 1
 +  selector:
 +    matchLabels:
 +      app: whoami
 +  template:
 +    metadata:
 +      labels:
 +        app: whoami
 +    spec:
 +      containers:
 +      - name: whoami-container
 +        image: containous/whoami
 +---
 +apiVersion: v1
 +kind: Service
 +metadata:
 +  name: whoami-service
 +spec:
 +  ports:
 +  - name: http
 +    targetPort: 80
 +    port: 80
 +  selector:
 +    app: whoami
 +---
 +apiVersion: extensions/v1beta1
 +kind: Ingress
 +metadata:
 +  name: whoami-ingress
 +  annotations:
 +    kubernetes.io/ingress.class: traefik
 +spec:
 +  rules:
 +  - host: whoami.localhost
 +    http:
 +      paths:
 +      - path: /
 +        backend:
 +          serviceName: whoami-service
 +          servicePort: http
 +</code>
 +
 +== añadir ingress para grafana de prometheus
 +<code yaml; grafana.yaml>
 +apiVersion: extensions/v1beta1
 +kind: Ingress
 +metadata:
 +  name: prometheus-operator-grafana
 +  namespace: monitoring
 +  annotations:
 +    kubernetes.io/ingress.class: traefik
 +spec:
 +  rules:
 +  - host: grafana-35-187-100-153.nip.io
 +    http:
 +      paths:
 +      - path: /
 +        backend:
 +          serviceName: prometheus-operator-grafana
 +          servicePort: 80
 +</code>
 +  * ''k apply -f grafana.yaml [-n monitoring]''
 +
 +== otros
 +  * cloudflare : anti-DDOS + CDN
 +  * confluence (10$ por 10 users on-premise)
 +  * ''docker system df''
  • info/cursos/pue/devops/sesion16.1554536748.txt.gz
  • Darrera modificació: 06/04/2019 00:45
  • per mate