Implemente 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 instalado 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 no OCI

Especificações mínimas recomendadas para 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 4 OCPUs ou mais
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 conter 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 conter 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.
  • Recomendamos o uso do Private workers para nós de trabalho do Kubernetes para maior segurança
  • Certifique-se de que os nós de trabalho tenham acesso à internet, o que é necessário para a instalação de chaincodes em suas instâncias do Oracle Blockchain Platform.

Esta seção abordará a criação de um exemplo do 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 tenancy do OCI, selecionando sua região e compartimento.
  2. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Contêineres e Artefatos, clique em Clusters do Kubernetes (OKE).
  3. Na página Lista de Clusters, clique em Criar cluster.
  4. Na caixa de diálogo Criar cluster, selecione Criação rápida e clique em Submeter.
  5. Na página Criar cluster, aceite os detalhes de configuração padrão para o novo cluster ou especifique alternativas da seguinte maneira:
    • Nome: O nome do novo cluster. Aceite o nome padrão ou digite um nome à sua escolha.
    • Compartimento: O compartimento no qual o novo cluster e os recursos de rede associados serão criados.
    • Versão do Kubernetes: A versão do Kubernetes a ser executada nos nós de plano de controle e nós de trabalho do cluster. A v1.29.1 foi testada com o Oracle Blockchain Platform Enterprise Edition.
    • Ponto final da API do Kubernetes: O tipo de acesso ao ponto final da API do Kubernetes do cluster. Selecione Público (acessível diretamente da internet). Uma sub-rede regional pública é criada e o ponto final da API do 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, você 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 de trabalho do cluster. Selecione Privado (acessível por meio de outras sub-redes da VCN). Uma sub-rede regional privada é criada para hospedar nós de trabalho. Os nós de trabalho recebem um endereço IP privado.
    • Forma do nó: A forma a usar para cada nó no pool de nós. A forma determina o número de CPUs e a quantidade de memória alocada para cada nó. A lista mostra somente as formas disponíveis em sua tenancy que são suportadas pelo Container Engine for Kubernetes. O Oracle Blockchain Platform Enterprise Edition foi testado com VM.Standard.E3. Flex e VM.Standard.E4. Formas flexíveis.
    • Imagem: A imagem a ser usada nos nós de trabalho do pool de nós gerenciados. Uma imagem é um modelo de disco rígido virtual que determina o sistema operacional e outro software 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 serem criados no pool de nós, colocados na sub-rede regional criada para o cluster. Selecione 3 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 conter imagens e dados temporários do Oracle Blockchain Platform Enterprise Edition para pods de chaincode por causa do armazenamento efêmero limitado. Se você estiver planejando implantar vários chaincodes (mais de 5), sugerimos aumentar 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 Resources, selecione Nodes. Para cada nó de trabalho, certifique-se de que o nó esteja pronto, ativo e corresponda à 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 de 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 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 Iniciador de Instalação

Configurar o 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 a máquina Oracle Linux ou macOS na qual você instalou os pré-requisitos. Suas chaves podem ser encontradas na console do OCI: Identidade, Domínios e, em seguida, OracleIdentityCloudService domínio, Usuários e, em seguida, Nome do usuário e, em seguida, Chaves de API. Proteja a chave: chmod 400 your_rsa.key

    Você pode criar uma nova 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, em seguida, Acesso Local.
    1. Crie um diretório para conter o arquivo kubeconfig: mkdir -p $HOME/.kube
    2. Copie o Para acessar o kubeconfig para seu cluster por meio do comando de ponto final público nativo da VCN.
    3. Execute o comando na sua máquina Linux ou macOS. Como o arquivo de configuração ainda não existe, você será solicitado a informar o seguinte:
      • Deseja criar um novo arquivo de configuração? [S/n]: y
      • Deseja criar seu arquivo de configuração fazendo login através de um navegador? [S/n]: n
      • Insira um local para sua configuração [/home/opc/.oci/config]: selecione um local
      • Digite um OCID do 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 Tenancy, por exemplo, 12
      • Deseja gerar um novo par de chaves RSA de Assinatura de API? Se você recusar, você será solicitado a fornecer o caminho para uma chave existente. [S/n]: n
      • Informe o local do arquivo de chave privada de Assinatura de API: local do arquivo de chave RSA criado acima
      Isso cria um arquivo de configuração que permite que a VM do plano de controle do Kubernetes acesse o cluster hospedado no OCI.
    4. Quando o arquivo de configuração do OCI for criado, execute novamente o Para acessar o kubeconfig do seu cluster por meio do comando de 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 produzirá todos os nós de trabalho em seu cluster.
  5. Restringir o acesso ao arquivo de configuração: chmod 600 $HOME/.kube/config
  6. Defina sua variável de ambiente KUBECONFIG para o arquivo deste cluster: export KUBECONFIG=$HOME/.kube/config

Observação:

Se seu arquivo de configuração do OCI tiver vários perfis semelhantes a:
[OCI_PROFILE_A]
fingerprint = .............
key_file = .............
tenancy = .............
region = .............
user = .............

[OCI_PROFILE_B] 
fingerprint = ............. 
key_file = .............
tenancy = .............
region = .............
user = ............. 
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 concluir o seguinte.


# 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 seu 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 Log-in 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. Descompacte o pacote e extraia-o do arquivo baixado.
    tar -xzf <distribution-package-file>
    # example tar -xzf obpee_package_24.1.3-20240723083137.tgz
  2. Atualize runme-input.yaml com os valores necessários. Este é um exemplo de runme-input.yaml que 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
    em que:
    • imageRegistryConfiguration.registry: Servidor de registro de 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 devem ser enviadas (extraídas) para (de). Exemplo: iad.ocir.io/obpee/bcs
    • imageRegistryConfiguration.username: Nome de 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 de 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 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 de contêiner, como o Oracle Cloud Infrastructure Registry, usando os detalhes especificados em runme-input.yaml.
    • Informe a senha do administrador LDAP padrão (a senha não será exibida): ela é usada para definir a senha do usuário administrador para o servidor de autenticação LDAP incorporado.
    • Digite a senha padrão do usuário administrador do plano de controle (a senha não será exibida): ela é usada para definir a senha do usuário administrador do Blockchain Platform Manager.
    • Se StorageClass não tiver sido fornecido em runme-input.yaml, o sistema verificará se a classe de armazenamento padrão está definida e perguntará se você deseja usá-la.
    • Confirme o tipo de serviço do gateway de entrada do Istio: LoadBalancer é padrão, NodePort também é suportado. Observe que o acesso a NodePorts requer que o cluster do Kubernetes seja 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 <registry name>: usada para estabelecer conexão com o registro de imagem do contêiner (conforme especificado em runme-input.yaml) para fazer download de imagens.
  4. Como parte da saída do script, ele listará o URL Istio-ingressgateway. Registre o endereço IP listado.
  5. O script de instalação continuará a instalar 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 do Blockchain Platform Manager gerados.
  1. Execute este 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 o seguinte:
    • LoadBalancer: resolve para o endereço IP externo gerado para o serviço istio-ingressgateway
    • NodePort: resolver para os endereços IP dos nós de trabalho