Skip to content

Instantly share code, notes, and snippets.

@daniframos
Created September 30, 2018 22:22
Show Gist options
  • Save daniframos/828897060ef6b13e0d20137c7f2fa7eb to your computer and use it in GitHub Desktop.
Save daniframos/828897060ef6b13e0d20137c7f2fa7eb to your computer and use it in GitHub Desktop.
OpenShoft

OpenShift e Azure

OpenShift é a plataforma de containers da Red Hat. Azure é a plataforma em computação em nuvem da microsoft. É totalmente possivel fazer um ambiente de orquestração de containers no openshift utilizando a infraestrutura do azure.

O ambiente

O ambiente que iremos montar será o seguinte:

  • 3 máquinas virtuais de 3,5gb de Ram com 32gb de disco cada
    • 1 Maquina Master no openShift
    • 1 Maquina para pods
    • 1 Maquina para infra
  • 2 Balanceadores de carga, 1 para infra e 1 para master
  • 2 Rede virtuais: Uma entre as maquinas de infra e master, 1 para todas as máquinas de pod

Para saber mais sobre a infraestrutura fisica, acesse: https://github.com/Microsoft/openshift-container-platform

Observe que a infraestrutura tem certa robustez. Logo, é totalmente criar aplicações poderosas. Entretanto, tem um custo. Recomendamos desligar suas maquinas virtuais no momento em que não estiverem sendo utilizadas

Utilizaremos os creditos que nos são fornecidos pela instituição no azure. r$ 500 mensais.

Requisitos

Para utilizar o openShift no azure, é necessário:

A instalação de ambos é basicamente next, next, next, finish. Não tem muito segredo

Montando o ambiente

Para montagem do ambiente openshift no azure, iremos basicamente criar um keyVault protegido com chave SSH privada, resource group, uma aplicação que usa o azure AD para guardar dados e credenciais

  • Abra o seu shell preferido (Powershell, Bash ou Terminal no MAC)
  • Crie uma pasta. Iremos guardar nossas configuracoes dentro dela
mkdir Azure
  • Navegue até a pasta
cd Azure
  • Autentique no azure
az login

Será solicitado usuário e senha do azure. Entre com seu usuário e senha que tem acesso ao azure, liberado pela Cassi. Algumas pessoas tem este acesso em seu email pessoal enquanto outras estão no email @cassi

Tela de Autenticação

após a autenticação, é retornado um json com suas assinaturas

Retorno autenticação

Os comandos serão sempre desta forma: Uma entrada, um retorno em json.

  • Crie o seu Resource Group. Com este retorno, não faremos nada
az group create --name kkricoresourcegroup --location eastus
  • Crie o KeyVault (no azure, KeyVault é a carteira de chaves, bem como GnomeKeyRing, Carteira no Mac ou Central de Senhas no Windows). Observe que o resource group criado acima vai como parametro na criação do Key Vault. Com este retorno, não faremos nada.
az keyvault create --resource-group kkricoresourcegroup --name kkricokeyvault --enabled-for-template-deployment true --location eastus
  • Criaremos uma chave privada ssh para ser adicionada em seu keyvault. ATENÇÃO: Se voce já gerou ou simplesmente tiver uma chave privada SSH, não é preciso gerar novamente. Basta reutiliza-la logo abaixo. Se voce fizer este tutorial em um ambiente unix (Mac ou Linux), pode pular este passo. Se for windows, abra o gitBash

GitBash

  • Navegue até a pasta que criamos acima
cd Azure
  • Crie uma chave ssh privada. Observe que será criada uma chave SSH publica e privada. Além disso, foram gerados 2 arquivos: openshift_rsa e openshift_rsa.pub, que são a chave privada e publica, respectivamente
ssh-keygen -f openshift_rsa -t rsa -N ''

ChavePrivada

ArquivosGerados

  • Voltando ao seu shell preferido (uso o powershell aqui), vamos usar a chave privada e inserir dentro do keyvault. O parametro file é o nome da sua chave privada. O retorno deste comando nao iremos usar
az keyvault secret set --vault-name kkricokeyvault --name keysecret --file openshift_rsa
  • Pegue o id do Resource Group. Iremos utiliza-lo no proximo comando
az group show --name kkricoresourcegroup --query id

ResourceGroupId

  • Use o id do resource group no comando que irá no azureAd e registrar as aplicação. Observe que "/subscriptions/1110101010101-0000-0000-0000-1110101010101/resourceGroups/keyvaultrg" é o id do seu resource group. O campo password é a senha, obviamente.
az ad sp create-for-rbac --name kkricoopenshiftsp --role Contributor --password 123456 --scopes "/subscriptions/1110101010101-0000-0000-0000-1110101010101/resourceGroups/kkricoresourcegroup"

AppId

Será retornado o json com várias informações, incluindo appId

  • Crie o cluster em si. Observe que é passado o nome do resource Group, nome do cluster em si. Além disso, é passado o arquivo de configuração, com o nome de azuredeploy.parameters.json. Este arquivo de configuração deve estar na pasta "Azure". Recomendamos também salvar em um arquivo o retorno deste comando. O comando, bem como conteudo do arquivo de configuração segue abaixo:
az group deployment create -g kkricoresourcegroup --name kkricocluster --template-uri https://raw.githubusercontent.com/Microsoft/openshift-origin/master/azuredeploy.json --parameters .\azuredeploy.parameters.json
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "masterVmSize": {
            "value": "Standard_DS1_v2"
        },
        "infraVmSize": {
            "value": "Standard_DS1_v2"
        },
        "nodeVmSize": {
            "value": "Standard_DS1_v2"
        },
        "openshiftClusterPrefix": {
            "value": "mycluster"
        },
        "masterInstanceCount": {
            "value": 1
        },
        "infraInstanceCount": {
            "value": 1
        },
        "nodeInstanceCount": {
            "value": 1
        },
        "dataDiskSize": {
            "value": 32
        },
        "adminUsername": {
            "value": "clusteradmin"
        },
        "openshiftPassword": {
            "value": "admin"
        },
        "sshPublicKey": {
            "value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCx/zw0Mv8wzOyXz5lwy8jXdF8cLW4v0MgBz9w/YsULZfGXRccomVqRL+SUlQccdiLvwGjoK5zA8PsDuKJVNN0MSoPlv1sCL9XFO9ljQrrD2815VaYWSAp9aGagQDu9LsgY2HMIFBfrdVnVQ+nQnX7Ezj1YP2ukUPOez6AkRy4c0PEbNzg0hnxZ3L0BjYiSpD5EB4ymm5V2sRVXhdN0puHn7fhu+ER9cJI/LGF+uYt07z3rEQ3+a9aJICp1EnX/D2ehB0pef1V6B+BSb9CKgx6OPXdMV85wQ81DfNXUv/tBZttIU0Z6l7ah5iQ7bibTq9sk9CftK15PPpAAXslott+r [email protected]"
        },
        "keyVaultResourceGroup": {
            "value": "kkricoresourcegroup"
        },
        "keyVaultName": {
            "value": "kkricokeyvault"
        },
        "keyVaultSecret": {
            "value": "keysecret"
        },
        "aadClientId": {
            "value": "66d84758-d86e-493f-848c-016cea5a1145"
        },
        "aadClientSecret": {
            "value": "123456"
        },
        "defaultSubDomainType": {
            "value": "nipio"
        }
    }
}
O arquivo de configuração recebe dentre vários parametros, o tamanho da máquina que será criada. Umas configurações chaves são: 
- sshPublicKey : Sua chave ssh publica. É o conteudo do arquivo "openshift_rsa.pub", sem a quebra de linha
- keyVaultResourceGroup : Nome do Resource Group do Azure
- keyVaultName : Nome do KeyVault
- aadClientId : id da Aplicação no Azure Id

É possivel configurar para mais maquinas. As maquinas que serão criadas são as menores maquinas disponveis para criação. O arquivo com as configurações possiveis está na sessão Mais informações, logo abaixo.
O comando acima demora uma quantidade consideravel de tempo (1hra, 1:30 hras). Apos a execução do comando, será retornado um json com todas as configurações do seu cluster. O json em si é grande, mas deixo um pedaço importante: A url que permitirá voce logar em seu cluster, bem como entrar na master via SSH. 
"outputs": {
      "openshift Console Url": {
        "type": "String",
        "value": "https://masterdnsguqowih62r4u2.eastus.cloudapp.azure.com/console"
      },
      "openshift Infra Load Balancer FQDN": {
        "type": "String",
        "value": "infradns3dsbkau6r3524.eastus.cloudapp.azure.com"
      },
      "openshift Master SSH": {
        "type": "String",
        "value": "ssh -p 2200 [email protected]"
      }
    },

Ao fim do processo, é possivel acessar utilizado a console url, bem como a cli do proprio open shift. O usuário de login está no arquivo de configuração que enviamos. Se não foi alterado, é clusteradmin com a senha admin

AppId

Duvidas comuns

Fiz algo errado. Tem como voltar?

Tem. Se foi antes de criar o cluster em si, basta remover o componente em si. Por exemplo: Remover o keyvault em si. Se após a criação do Cluster (ou tentativa de criação), é necessário remover a aplicação do azure Ad

Não consigo entrar via SSH no master. Porque?

Para entrar no master via ssh, é preciso informar a chave privada.

ssh -i /X/KK/Azure/openshift_rsa -p 2200 [email protected]

onde a chave privada está localizada no drive X:\KK\Azure\openshift_rsa (windows) na máquina

Acabaram meus creditos no azure. E agora?

Seus creditos são renovadas mensalmente. Normalmente, dia 9. Até lá, voce fica sem ambiente. Por isso, recomendamos desligar sua maquina quando não estiver utilizando.

Mais informações

https://github.com/Microsoft/openshift-container-platform

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/openshift-get-started

https://github.com/Microsoft/openshift-origin/blob/master/nested/openshiftdeploy.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment