Giter VIP home page Giter VIP logo

kadm-install's Introduction

Instalación de Kubernetes v1.8

Prerequisitos e instalación kubeadm

Utilizando Ubuntu 16.04 , se requiere instalar los prerequisitos y la versión de docker: docker-ce=17.03.1ce-0ubuntu-xenial para TODOS los hosts que vayan a ser parte del cluster, tanto rol de master como workers

apt-get update
apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable"

apt-get update && apt-get install -y docker-ce=17.03.1~ce-0~ubuntu-xenial
```

Luego es necesario modificar el unit del servicio docker para que acepte algún docker-registry inseguro, para ello abrir el archivo /lib/systemd/system/docker.service y editar la línea con ***ExecStart=/usr/bin/dockerd -H fd://*** para que quede de la siguiente forma:

`````shell
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry=${REGISTRY_HOST_IP}:{REGISTRY_HOST_PORT}
```
**Esta instalación contempla que el registry exista en el host master y en el puerto 5000.**




### Instalación de Kubeadm, kubelet y kubectl para Kubernetes v1.8
#### Instalar kubeadm y levantar cluster
Para todos los hosts que vayan a pertenecer al cluster se debe ejecutar lo siguiente:
`````shell
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update

apt-get install kubeadm=1.8.3-00 kubelet=1.8.3-00 kubectl=1.8.3-00
```

#### Iniciar cluster con kubeadm desde nodo master
Iniciar
`````shell
kubeadm init --pod-network-cidr=10.244.0.0/16
```
Agregar archivo de configuración para kubeadm:
`````shell
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
Agregar flannel al cluster
`````shell
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
```

Al aplicar kubeadm init, se debe obtener una salida del tipo:
`````shell
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
```
La cual debe ser utilizada para agregar en los hosts

Para comprobar que los nodos se encuentran en estado listo:
`````shell
kubectl get nodes
```

#### Instalar helm



Descargar el binario helm, descomprimirlo y agregarlo al PATH de binarios utilizables
`````shell
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz
tar -xcvf helm-v2.7.2-linux-amd64.tar.gz
cp $PWD/linux-amd64/helm /usr/local/bin/
```
Luego agregar roles para utilizar helm con los privilegios requeridos:
`````shell
kubectl create sa tiller-deploy -n kube-system
kubectl create clusterrolebinding helm --clusterrole=cluster-admin --serviceaccount=kube-system:tiller-deploy
helm init --service-account=tiller-deploy
```

Para comprobar el estado de helm, se puede ejecutar:
`````shell
kubectl get po -n kube-system
```
donde debe aparecer un pod *tiller-deploy* en estado running.

## Instalar Deis Workflow
**En el nodo maestro:**

### Docker Registry

`````shell
mkdir -p /srv/registry

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /srv/registry:/var/lib/registry \
  registry:2
```

### Desplegar Deis Workflow
Instalar repositorio de Deis para Helm y descargar Chart:
`````shell
helm repo add deis https://charts.deis.com/workflow
helm fetch deis/workflow --untar
cd workflow
# edit values.yaml
```
Es necesario editar el archivo values.yaml para que contemple un registry externo y permita utilizar RBAC, estas ediciones son las siguientes al interior del archivo:

Registry externo:
`````shell
  registry_location: "off-cluster"
```
Utilizar RBAC:
`````shell
  use_rbac: true
```
Configuración registry externo:
`````shell
registry-token-refresher:
  # Time in minutes after which the token should be refreshed.
  # Leave it empty to use the default provider time.
  token_refresh_time: ""
  off_cluster_registry:
    hostname: "REGISTRY_HOST_IP:REGISTRY_HOST_PORT"
    organization: "cocha"
    username: ""
    password: ""
```
**Donde REGISTRY_HOST_IP:REGISTRY_HOST_PORT son los mismos utilizados en el unit de docker**
Ahora es posible desplegar Deis Workflow mediante  helm:
`````shell
helm install deis/workflow --namespace deis -f values.yaml
```
Se debe esperar que todos los pods se encuentren en estado running, esto se puede conocer mediante kubectl
`````shell
kubectl -n deis get pods
```
Una vez que todos los pods se encuentren en estado en ejecución se sigue con la configuración de HAproxy como punto de conexión entre el cluster y el exterior.

### Instalar HAproxy
El rol del HAproxy es redirigir el tráfico desde puertos estándar hacia los que son utilizados por los componentes de Deis  a través de un servicio de Kubernetes.
El primer paso es instalar haproxy:
`````shell
apt-get install haproxy -y
```

Después se requiere conocer los puertos del host tomados por Kubernetes para Deis para configurarlos en HAproxy:
`````shell
kubectl -n deis get svc | grep deis-router | awk '{print $5}'
```
La cual entregará una salida como la siguiente(**los puertos 3xxxx son aleatorios y cambian según cada instalación**)
`````shell
80:31639/TCP,443:30868/TCP,2222:31188/TCP,9090:31628/TCP
```
Para estos puertos se debe configurar como frontend 80,443, 2222 (9090 es opcional) y los backend serán la IP del master con los puertos 3xxxx. Siguiende el ejemplo anterior, asociación es la siguiente:
* Frontend 80 - Backend 31639
* Frontend 443 - Backend 30868
* Frontend 2222 - Backend 31188


Estos se deben agregar al final del archivo /etc/haproxy/haproxy.cfg tal como se muestra a continuación:
`````shell
frontend deis-builder
	mode tcp
	bind 0.0.0.0:2222
	default_backend deis-builder-cluster

frontend deis-http
	mode tcp
	bind 0.0.0.0:80
	default_backend deis-http-cluster

frontend deis-https
	mode tcp
	bind 0.0.0.0:443
	default_backend deis-https-cluster

backend deis-builder-cluster
	mode tcp
	server deis-builder-nodo IP_MASTER:31188

backend deis-http-cluster
	mode tcp
	server deis-http-nodo IP_MASTER:31639

backend traefik-https-cluster
	mode tcp
	server deis-https-nodo IP_MASTER:30868
```
Nuevamente se hace énfasis en que los puertos 31188, 31639 y 30868 son ejemplos de esta guía y varían según cada instalación de Deis.

Una vez modificado el archivo de configuración, es necesario reiniciar el servicio:
`````shell
systemctl restart haproxy
```

### Utilizar Plataforma como Servicio
Estos pasos deben ser ejecutados desde un host que tenga acceso a los puertos 80, 443 y 2222  del nodo maestro del cluster Kubernetes. 

Es necesario disponer un registro wilcard hacia el nodo maestro por ejemplo *.dev.cocha.com o bien, en caso de no tenerlo, editar el archivo /etc/hosts desde el equipo en que se utilizará el cliente deis incluyendo las directivas mínimas para utilizar deis, a continuación se deja un ejemplo de /etc/hosts **utilizando el dominio dev.cocha.com**:
`````shell
IP_MASTER deis.dev.cocha.com
IP_MASTER deis-builder.dev.cocha.com
```
Posteriormente por cada aplicación:
`````shell
IP_MASTER nombre-aplicacion.dev.cocha.com
```

#### Instalación cliente deis
`````shell
curl -sSL http://deis.io/deis-cli/install-v2.sh | bash
sudo mv $PWD/deis /usr/local/bin/deis
deis version
```


#### Registro administrador 
El primer registro pertenece al administrador del cluster
`````shell
deis register http://deis.dev.cocha.com
```

#### Agregar llave ssh para operar con repositorio git
`````shell
deis keys:add ~/path/to/ssh_key.pub
```

#### Levantar aplicación mediante repositorio git
`````shell
git clone https://github.com/gemoya/example-go
cd example-go
deis create nombre-app
git push deis master
curl -i nombre-app.dev.cocha.com
```
recordar agregar nombre-app.dev.cocha.com en archivo /etc/hosts si no se tiene un wildcard apuntando al servidor master.

#### Registrar usuarios desde administrador
`````shell
deis register http://deis.dev.cocha.com --login=false
```

kadm-install's People

Contributors

gemoya avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.