Implante o Oracle Blockchain Platform Enterprise Edition no Oracle Kubernetes Engine

Antes de implantar o Oracle Blockchain Platform Enterprise Edition, você deve ter um cluster do Kubernetes em execução e deve instalar vários pré-requisitos.

Para obter informações detalhadas sobre o Oracle Kubernetes Engine, consulte Oracle Cloud Infrastructure Container Engine for Kubernetes

Criar um Cluster do Oracle Kubernetes Engine na OCI

Especificações mínimas recomendadas para o seu Cluster do Oracle Kubernetes Engine:
  Desenvolvimento Produção com Alta Disponibilidade
Versão Mínima v1.29.1 v1.29.1
Tipo de Nó Gerenciado Gerenciado
Imagem do Nó Oracle Linux 8 Oracle Linux 8
CPU do Nó 2 OCPUs ou mais recente 4 OCPUs ou mais recente
Memória do Nó 24 GB ou mais 32 GB ou mais
Contagem de Nós 1 ou uma versão mais recente 3 ou uma versão mais recente
Tamanho do volume de inicialização 100 GB ou mais. O volume de inicialização padrão de 50 GB pode não ser suficiente para armazenar imagens de contêiner do Oracle Blockchain Platform Enterprise Edition e dados temporários para pods de chaincode por causa do armazenamento efêmero limitado. 100 GB ou mais. O volume de inicialização padrão de 50 GB pode não ser suficiente para armazenar imagens de contêiner do Oracle Blockchain Platform Enterprise Edition e dados temporários para pods de chaincode por causa do armazenamento efêmero limitado.
  • Para segurança adicional, selecione Private workers para os nós de trabalho do Kubernetes.
  • Certifique-se de que os nós de trabalho tenham acesso à internet, o que é necessário para instalar chaincodes em suas instâncias do Oracle Blockchain Platform.

Esta seção explica como criar um exemplo de Oracle Kubernetes Engine na OCI. Para obter opções e detalhes adicionais, consulte Criando Clusters do Kubernetes Usando Workflows da Console

  1. Faça log-in na sua tenancy do OCI, selecionando sua região e compartimento.
  2. Abra o menu de navegação e clique em Serviços de Desenvolvedor. Em Contêineres e Artefatos, clique em Clusters Kubernetes (OKE).
  3. Na página Lista de Clusters, clique em Criar cluster.
  4. No diálogo Criar cluster, selecione Criação rápida e clique em Submeter.
  5. Na páginaCriar cluster, aceite os detalhes da configuração padrão para o novo cluster ou especifique alternativas conforme a seguir:
    • Nome: O nome da nova cluster. Aceite o nome default ou informe um nome de sua escolha.
    • Compartimento: O compartimento no qual o novo cluster e os recursos da rede associados serão criados.
    • versão do Kubernetes: A versão do Kubernetes a ser executada nos nós do plano e de trabalho do cluster. A versão v1.29.1 foi testada com o Oracle Blockchain Platform Enterprise Edition.
    • Ponto final da API Kubernetes: O tipo de acesso ao ponto final da API Kubernetes do cluster. Selecione Público (acessível diretamente da internet). Uma sub-rede regional pública é criada e o ponto final de API Kubernetes é hospedado nessa sub-rede. O ponto final da API do Kubernetes recebe um endereço IP público, bem como um endereço IP privado.

    • Tipo de nó: Especifique o tipo de nós de trabalho no primeiro pool de nós do cluster. Selecione Gerenciado. Você tem a responsabilidade de gerenciar os nós de trabalho no pool de nós. Nós gerenciados são executados em instâncias de computação (bare metal ou máquina virtual) em sua tenancy. Como você é responsável por gerenciar nós gerenciados, tem a flexibilidade de configurá-los para atender aos seus requisitos específicos. Você é responsável pelo upgrade do Kubernetes em nós gerenciados e pelo gerenciamento da capacidade do cluster.
    • Nós de trabalho do Kubernetes: O tipo de acesso aos nós do cluster de trabalho. Selecione Privado (acessível por meio de outras sub-redes da VCN). Uma sub-rede regional privada é criada para hospedar nós de trabalhador. Os nós de trabalho recebem um endereço IP privado.
    • Forma do nó: A forma a ser usada para cada nó no pool. A forma determina o número de CPUs e a quantidade de memória alocada para cada nó. A lista mostra apenas as formas disponíveis na sua tenancy que são suportadas pelo Container Engine for Kubernetes. O Oracle Blockchain Platform Enterprise Edition foi testado com o VM.Standard.E3. Flex e VM.Standard.E4. Formas flexíveis.
    • Imagem: A imagem a ser usada nos nós de trabalho no pool de nós gerenciados. Uma imagem é um modelo de um disco rígido virtual que determina o sistema operacional e outros softwares para o pool de nós gerenciados. O Oracle Blockchain Platform Enterprise Edition foi testado com o Oracle Linux 8.
    • Contagem de nós: O número de nós de trabalho a ser criado no pool de nó, colocado na sub-rede regional criada para o cluster. Selecione três ou mais.
    Selecione as seguintes Opções Avançadas:
    • Volume de inicialização: Configure as opções de tamanho e criptografia para o volume de inicialização do nó de trabalho. O volume de inicialização padrão de 50 GB pode não ser suficiente para armazenar imagens do Oracle Blockchain Platform Enterprise Edition e dados temporários para pods de chaincode por causa do armazenamento efêmero limitado. Se você planeja implantar vários chaincodes (mais de cinco), aumente o volume de inicialização para aproximadamente 100 GB.
  6. Verifique as opções selecionadas e clique em Criar Cluster.
  7. Certifique-se de que os nós de trabalho e pools de nós estejam em execução:
    • Em Recursos, selecione Nós. Para cada nó de trabalho, verifique se o nó está pronto, ativo e corresponde à versão do cluster do Kubernetes.
    • Em Recursos, selecione Pools de nós. Para seu pool de nós, certifique-se de que o pool esteja ativo e corresponda à versão do cluster do Kubernetes.

Instalar a Interface da Linha de Comando do OCI

Esta seção fornece um exemplo de passo a passo da instalação da Interface de Linha de Comando do OCI. O Oracle Blockchain Platform Enterprise Edition foi testado com a versão v3.42.0. Para obter informações adicionais, consulte Interface de Linha de Comando do OCI.

# Install:
    sudo dnf -y install oraclelinux-developer-release-el8
    sudo dnf -y install python36-oci-cli
 
# Verify:
    $ oci --version
    3.42.0
# Install:

    brew update && brew install oci-cli

## If this fails with "Error: python@3.12: the bottle needs the Apple Command Line Tools to be installed.", run below command:

    xcode-select --install

# Verify:
   oci --version
   3.43.1

Criar Sistema do Iniciador de Instalação

Configurar acesso local para o cluster

Consulte o seguinte para obter informações adicionais: Configurando o Acesso Local a Clusters.

  1. Copie sua chave RSA para o sistema Oracle Linux ou macOS no qual você instalou os pré-requisitos. Suas chaves podem ser encontradas na console do OCI: Identidade, Domínios, domínio OracleIdentityCloudService, Usuários, Nome do usuário e Chaves de API. Proteja a chave: chmod 400 your_rsa.key

    Você pode criar uma chave, se necessário. Consulte Como Gerar uma Chave de Assinatura de API

  2. Na console do OCI, vá para o cluster e abra a página Detalhes do Cluster.
  3. Selecione Acessar Cluster e Acesso Local.
    1. Crie um diretório para conter o arquivo kubeconfig: mkdir -p $HOME/.kube
    2. Copie o comando Para acessar o kubeconfig do seu cluster por meio do comando ponto final público VCN-Native.
    3. Execute o comando no seu sistema Linux ou macOS. Como o arquivo de configuração ainda não existe, você será solicitado a fornecer o seguinte:
      • Deseja criar um novo arquivo de configuração? [S/n]: y
      • Deseja criar seu arquivo de configuração fazendo login por meio de um navegador? [S/n]: n
      • Informe um local para sua configuração [/home/opc/.oci/config]: selecione um local
      • Digite um OCID de usuário: pode ser encontrado na console do OCI
      • Digite um OCID da tenancy: pode ser encontrado na console do OCI
      • Informe uma região por índice ou nome: Informe o número correspondente à Região da sua Tenancy, por exemplo, 12
      • Deseja gerar um novo par de chaves RSA de Assinatura de API? Se você recusar, será solicitado que forneça o caminho para uma chave existente. [S/n]: n
      • Informe o local do seu arquivo de chave privada de Assinatura de API: local do arquivo de chave RSA criado acima
      Isso cria um arquivo de configuração que dá ao plano de controle do Kubernetes acesso de VM ao cluster hospedado no OCI.
    4. Quando o arquivo de configuração do OCI for criado, execute novamente o comando Para acessar o kubeconfig do seu cluster por meio do comando ponto final público nativo da VCN. Ele usará o arquivo de configuração que você acabou de criar.
  4. Verifique se você pode acessar o cluster do Oracle Kubernetes Engine: kubectl get nodes. Se a configuração estiver correta, o comando mostrará todos os nós de trabalho do cluster.
  5. Restrinja o acesso ao arquivo de configuração: chmod 600 $HOME/.kube/config
  6. Defina a variável de ambiente KUBECONFIG para o arquivo deste cluster: export KUBECONFIG=$HOME/.kube/config

Observação:

Verifique se o arquivo de configuração do OCI tem vários perfis semelhantes ao seguinte texto:
[OCI_PROFILE_A]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............

[OCI_PROFILE_B] 
fingerprint = ............. 
key_file = .............
tenancy = .............
region = .............
user = ............. 
Em caso afirmativo, você precisará personalizar o arquivo kubeconfig ou obterá um erro de autorização ao tentar instalar o Oracle Blockchain Platform Enterprise Edition. Na seção de usuários do arquivo kubeconfig, adicione uma linha para especificar qual usuário usar no seu arquivo de configuração do OCI. Por exemplo
users:
- name: user-c3xxxxxq
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      args:
      - ce
      - cluster
      - generate-token
      - --cluster-id
      - ocid1.cluster.oc1.eu-frankfurt-1.aaaaaaxxxxxxxxxyyyyyy
      - --region
      - eu-frankfurt-1
      - --profile
      - <OCI_PROFILE_NAME>
      command: oci
      env: []
      interactiveMode: IfAvailable
      provideClusterInfo: false
em que <OCI_PROFILE_NAME> seria OCI_PROFILE_A

Concluir a Instalação do Istio

O Oracle Blockchain Platform Enterprise Edition suporta a versão 1.20.2 e posterior. Você deve ter concluído as etapas em Instalar Istio antes de executar os comandos a seguir.


# Install
    istioctl install --set profile=default --set values.pilot.env.ENABLE_TLS_ON_SIDECAR_INGRESS=true --set components.cni.enabled=true --set values.cni.repair.deletePods="true"
    ## Enter "y" when prompted for "Proceed? (y/N)"
 
# Verify:
    $ istioctl version
    client version: 1.22.1
    control plane version: 1.22.1
    data plane version: 1.22.1 (1 proxies)

Configurar um Token de Autenticação para o Usuário

Crie um Token de Autenticação para seu usuário administrativo para que você possa extrair imagens do OCI Registry: Gerando um Token de Autenticação para Ativar o Login no Oracle Cloud Infrastructure Registry.

Instalar o Oracle Blockchain Platform Enterprise Edition

  1. Na página Oracle Blockchain Platform Enterprise Edition, clique em Fazer Download e siga as etapas para fazer download do pacote Oracle Blockchain Platform Enterprise Edition. Extraia o pacote do arquivo .zip e, em seguida, extraia o pacote do arquivo baixado.
    tar -xzf <distribution-package-file>
    # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
  2. Atualize o arquivo runme-input.yaml com os valores necessários. O seguinte arquivo de exemplo runme-input.yaml pode ser usado como referência:
    imageRegistryConfiguration:
      registry: <container_registry_name>
      imageTagPrefix: <container-image-repository-prefix>
      username: <container-registry-username>
     
    imageReleaseVersion: 24.1.3-20240723083137
     
    # storageClassName should be set to create a dynamic persistent volume. If empty, default storageClass is used.
     
    controlPlaneStorage:
      storageClassName: 
      # Example 500Mi, 5Gi
      size: 4Gi
      
    parentDomainName: example.com
    #imagePullTimeout: Use this field to customize the wait time (in seconds) for pulling the required container images from the repository. Default is 1800 seconds.
        imagePullTimeout: 1800
    No exemplo anterior, as variáveis são definidas conforme mostrado na seguinte lista:
    • imageRegistryConfiguration.registry: Servidor de registro do contêiner a ser usado. Exemplo: iad.ocir.io
    • imageRegistryConfiguration.imageTagPrefix: Caminho do repositório base do contêiner com o registro, no qual as imagens serão enviadas e extraídas. Exemplo: iad.ocir.io/obpee/bcs
    • imageRegistryConfiguration.username: Nome do usuário de log-in no registro do contêiner
    • imageReleaseVersion - Versão da versão do Oracle Blockchain Platform Enterprise Edition
    • controlPlaneStorage.storageClassName: Classe de armazenamento do Kubernetes a ser usada para PVC (PersistentVolumeClaim). Se estiver vazio, o padrão storageClass será usado
    • controlPlaneStorage.size: Tamanho da PVC para serviços do Blockchain Platform Manager (plano de controle)
    • parentDomainName: Nome de domínio a ser usado para serviços do Blockchain Platform Manager. Exemplo: example.com
    • imagePullTimeout: Timeout de espera de extração de imagem em segundos durante a instalação do Oracle Blockchain Platform Enterprise Edition. O padrão é 1800 segundos.
  3. Execute o script runme_oke.sh [--publish-images], seguindo os prompts.

    Observação:

    O comando --publish-images opcional faz upload dos contêineres para um registro de imagem do contêiner, como o Oracle Cloud Infrastructure Registry usando os detalhes especificados no arquivo runme-input.yaml.
    • Informe a senha de administrador LDAP padrão (a senha não será exibida): define a senha do administrador para o servidor de autenticação LDAP incorporado.
    • Informe a senha do usuário administrador do plano de controle padrão (a senha não será exibida): define a senha do administrador do Gerenciador do Blockchain Platform.
    • Se StorageClass não tiver sido fornecido no arquivo runme-input.yaml, o sistema verificará se a classe de armazenamento padrão está definida e perguntará se você deseja usá-la.
    • Confirme se o tipo de serviço do gateway de entrada do Istio: LoadBalancer é o padrão. NodePort também é suportado. Observe que o acesso ao NodePorts requer que o cluster do Kubernetes tenha sido criado com nós de trabalho públicos. Consulte Instalar Istio.
    • Confirme a porta https do serviço de gateway de entrada do Istio: o padrão é 443 para o tipo de serviço LoadBalancer.
    • Informe a senha do registro <nome do registro>: essa senha é usada para estabelecer conexão com o registro de imagens do contêiner (conforme especificado no arquivo runme-input.yaml) para fazer download de imagens.
  4. O script lista o URL Istio-ingressgateway como parte da saída. Registre o endereço IP listado.
  5. O script instala os seguintes serviços no namespace obp-cp:
    • control-plane
    • openldap
    • obp-auth-server
    • obp-operator
    • hlf-operator

Acessar o Blockchain Platform Manager

Após a instalação, configure a resolução do nome do host para os nomes de host gerados do Gerenciador do Blockchain Platform.
  1. Execute o seguinte comando para obter a lista de nomes de host configurados:
    kubectl get virtualservice -n obp-cp -o json | jq -r '.items[].spec.hosts[0]'
  2. Com base no tipo de serviço escolhido para istio-ingressgateway, esses nomes de host gerados devem ser resolvidos para um endereço IPv4 de acordo com os seguintes requisitos:
    • LoadBalancer: Resolva para o endereço IP externo gerado para o serviço istio-ingressgateway. Execute o seguinte comando para obter o endereço IP.
      kubectl get svc/istio-ingressgateway -n istio-system
      Adicione a linha a seguir ao arquivo /etc/hosts (Linux, macOS) ou ao arquivo C:\Windows\system32\drivers\etc\hosts (Microsoft Windows) no host usado para estabelecer conexão com a console do Gerenciador do Blockchain Platform.
      <public_svc_ip> controlplane.<parentDomainName> openldap.<parentDomainName> auth.<parentDomainName>
    • NodePort: Resolva para os endereços IP dos nós de trabalho.