Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Uso de um ConfigMap

O exemplo a seguir mostra como usar um ConfigMap.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cce-configmap
data:
  SPECIAL_LEVEL: Hello
  SPECIAL_TYPE: CCE
  • Quando um ConfigMap é usado em uma carga de trabalho, a carga de trabalho e o ConfigMap devem estar no mesmo cluster e namespace.
  • Quando um ConfigMap é montado como um volume de dados e o ConfigMap é atualizado, o Kubernetes atualiza os dados no volume de dados ao mesmo tempo.

    Para um volume de dados do ConfigMap montado no modo subPath, o Kubernetes não pode atualizar automaticamente os dados no volume de dados quando o ConfigMap é atualizado.

  • Quando um ConfigMap é usado como uma variável de ambiente, os dados não são atualizados automaticamente quando o ConfigMap é atualizado. Para atualizar os dados, reinicie o pod.

Configurar variáveis de ambiente de carga de trabalho

Usar o console

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. No painel de navegação, escolha Workloads. Em seguida, clique em Create Workload.

    Ao criar uma carga de trabalho, clique em Environment Variables na área Container Settings e clique em .

    • Added from ConfigMap: selecione um ConfigMap para importar todas as suas chaves como variáveis de ambiente.

    • Added from ConfigMap key: importe uma chave em um ConfigMap como o valor de uma variável de ambiente.
      • Variable Name: nome de uma variável de ambiente na carga de trabalho. O nome pode ser personalizado e é definido como o nome da chave selecionado no ConfigMap por padrão.
      • Variable Value/Reference: selecione um ConfigMap e a chave a serem importados. O valor correspondente é importado como uma variável de ambiente de carga de trabalho.

      Por exemplo, depois de importar o valor Hello de SPECIAL_LEVEL no ConfigMap cce-configmap como o valor da variável de ambiente de carga de trabalho SPECIAL_LEVEL, uma variável de ambiente denominada SPECIAL_LEVEL com seu valor Hello existe no contêiner.

  3. Configure outros parâmetros de carga de trabalho e clique em Create Workload.

    Depois que a carga de trabalho for executada corretamente, efetue logon no contêiner e execute a seguinte instrução para verificar se o ConfigMap foi definido como uma variável de ambiente da carga de trabalho:

    printenv SPECIAL_LEVEL

    A saída de exemplo é a seguinte:

    Hello

Usar kubectl

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie um arquivo chamado nginx-configmap.yaml e edite-o.

    vi nginx-configmap.yaml

    Conteúdo do arquivo YAML:

    • Added from a ConfigMap: para adicionar todos os dados em um ConfigMap às variáveis de ambiente, use o parâmetro envFrom. As chaves no ConfigMap se tornarão nomes de variáveis de ambiente em uma carga de trabalho.
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-configmap
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx-configmap
        template:
          metadata:
            labels:
              app: nginx-configmap
          spec:
            containers:
            - name: container-1
              image: nginx:latest
              envFrom:                      # Use envFrom to specify a ConfigMap to be referenced by environment variables.
              - configMapRef:
                  name: cce-configmap       # Name of the referenced ConfigMap.
            imagePullSecrets:
            - name: default-secret
    • Added from a ConfigMap key: ao criar uma carga de trabalho, você pode usar um segredo para definir variáveis de ambiente e usar o parâmetro valueFrom para fazer referência ao par chave-valor no ConfigMap separadamente.
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-configmap
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx-configmap
        template:
          metadata:
            labels:
              app: nginx-configmap
          spec:
            containers:
            - name: container-1
              image: nginx:latest
              env:                             # Set the environment variable in the workload.
              - name: SPECIAL_LEVEL           # Name of the environment variable in the workload.
                valueFrom:                    # Specify a ConfigMap to be referenced by the environment variable.
                  configMapKeyRef:
                    name: cce-configmap       # Name of the referenced ConfigMap.
                    key: SPECIAL_LEVEL        # Key in the referenced ConfigMap.
              - name: SPECIAL_TYPE            # Add multiple environment variables to import them at the same time.
                valueFrom:
                  configMapKeyRef:
                    name: cce-configmap
                    key: SPECIAL_TYPE
            imagePullSecrets:
            - name: default-secret

  3. Crie uma carga de trabalho.

    kubectl apply -f nginx-configmap.yaml

  4. Visualize a variável de ambiente no pod.

    1. Execute o seguinte comando para exibir o pod criado:
      kubectl get pod | grep nginx-configmap
      Saída esperada:
      nginx-configmap-***   1/1     Running   0              2m18s
    2. Execute o seguinte comando para exibir as variáveis de ambiente no pod:
      kubectl exec nginx-configmap-*** -- printenv SPECIAL_LEVEL SPECIAL_TYPE

      Saída esperada:

      Hello
      CCE

      O ConfigMap foi definido como variáveis de ambiente da carga de trabalho.

Definição de parâmetros de linha de comando

Você pode usar um ConfigMap como uma variável de ambiente para definir comandos ou valores de parâmetro para um contêiner usando a sintaxe de substituição de variável de ambiente $(VAR_NAME).

Usar o console

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. No painel de navegação, escolha Workloads. Em seguida, clique em Create Workload.

    Ao criar uma carga de trabalho, clique em Environment Variables na área Container Settings e clique em . Neste exemplo, selecione Added from ConfigMap.

    • Added from ConfigMap: selecione um ConfigMap para importar todas as suas chaves como variáveis de ambiente.

  3. Clique em Lifecycle na área Container Settings, clique na guia Post-Start à direita e defina os seguintes parâmetros:

    • Processing Method: CLI
    • Command: insira as três linhas de comando a seguir. SPECIAL_LEVEL e SPECIAL_TYPE são os nomes das variáveis de ambiente na carga de trabalho, ou seja, os nomes das chaves no ConfigMap cce-configmap.
      /bin/bash
      -c
      echo $SPECIAL_LEVEL $SPECIAL_TYPE > /usr/share/nginx/html/index.html

  4. Defina outros parâmetros de carga de trabalho e clique em Create Workload.

    Depois que a carga de trabalho for executada corretamente, efetue logon no contêiner e execute a seguinte instrução para verificar se o ConfigMap foi definido como uma variável de ambiente da carga de trabalho:

    cat /usr/share/nginx/html/index.html

    A saída de exemplo é a seguinte:

    Hello CCE

Usar kubectl

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie um arquivo chamado nginx-configmap.yaml e edite-o.

    vi nginx-configmap.yaml

    Conforme mostrado no exemplo a seguir, o ConfigMap cce-configmap é importado para a carga de trabalho. SPECIAL_LEVEL e SPECIAL_TYPE são os nomes das variáveis de ambiente na carga de trabalho, ou seja, os nomes das chaves no ConfigMap cce-configmap.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-configmap
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-configmap
      template:
        metadata:
          labels:
            app: nginx-configmap
        spec:
          containers:
          - name: container-1
            image: nginx:latest
            lifecycle:
              postStart:
                exec:
                  command: [ "/bin/sh", "-c", "echo $SPECIAL_LEVEL $SPECIAL_TYPE > /usr/share/nginx/html/index.html" ]
            envFrom:                      # Use envFrom to specify a ConfigMap to be referenced by environment variables.
            - configMapRef:
                name: cce-configmap       # Name of the referenced ConfigMap.
          imagePullSecrets:
            - name: default-secret

  3. Crie uma carga de trabalho.

    kubectl apply -f nginx-configmap.yaml

  4. Depois que a carga de trabalho é executada corretamente, o seguinte conteúdo é inserido no arquivo /usr/share/nginx/html/index.html no contêiner:

    1. Execute o seguinte comando para exibir o pod criado:
      kubectl get pod | grep nginx-configmap
      Saída esperada:
      nginx-configmap-***   1/1     Running   0              2m18s
    2. Execute o seguinte comando para exibir as variáveis de ambiente no pod:
      kubectl exec nginx-configmap-*** -- cat /usr/share/nginx/html/index.html

      Saída esperada:

      Hello CCE

Anexação de um ConfigMap ao volume de dados da carga de trabalho

Os dados armazenados em um ConfigMap podem ser referenciados em um volume do tipo de ConfigMap. Você pode montar esse volume em um caminho de contêiner especificado. A plataforma suporta a separação de códigos de carga de trabalho e arquivos de configuração. Os volumes de ConfigMap são usados para armazenar parâmetros de configuração da carga de trabalho. Antes disso, crie ConfigMaps com antecedência. Para mais detalhes, consulte Criação de um ConfigMap.

Usar o console

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. No painel de navegação, escolha Workloads. Em seguida, clique em Create Workload.

    Ao criar uma carga de trabalho, clique em Data Storage na área Container Settings. Clique em Add Volume e selecione ConfigMap na lista suspensa.

  3. Defina o tipo de volume local como ConfigMap e defina os parâmetros para adicionar um volume local, conforme mostrado na Tabela 1.

    Tabela 1 Montagem de um volume de ConfigMap

    Parâmetro

    Descrição

    ConfigMap

    Selecione o ConfigMap desejado.

    Um ConfigMap deve ser criado com antecedência. Para mais detalhes, consulte Criação de um ConfigMap.

    Add Container Path

    Configure os seguintes parâmetros:
    1. Mount Path: insira um caminho do contêiner, por exemplo, /tmp.
      Este parâmetro indica o caminho do contêiner no qual um volume de dados será montado. Não monte o volume para um diretório do sistema, como / ou /var/run; essa ação pode causar erros de contêiner. É aconselhável montar o volume para um diretório vazio. Se o diretório não estiver vazio, verifique se não há arquivos que afetem a inicialização do contêiner. Caso contrário, os arquivos serão substituídos, causando falhas de inicialização do contêiner ou falhas de criação de carga de trabalho.
      AVISO:

      Quando o contêiner é montado em um diretório de alto risco, é aconselhável usar uma conta com permissões mínimas para iniciar o contêiner; caso contrário, os arquivos de alto risco no computador host podem ser danificados.

    2. Subpath: digite um subcaminho, por exemplo, tmp.
      • Um subcaminho é usado para montar um volume local para que o mesmo volume de dados seja usado em um único pod. Se este parâmetro for deixado em branco, o caminho raiz é usado por padrão.
      • O subcaminho pode ser a chave e o valor de um ConfigMap ou segredo. Se o subcaminho for um par chave-valor que não existe, a importação de dados não terá efeito.
      • Os dados importados especificando um subcaminho não serão atualizados junto com as atualizações do ConfigMap/segredo.
    3. Defina a permissão para Read-only. Os volumes de dados no caminho são somente leitura.

    Você pode clicar em para adicionar vários caminhos e subcaminhos.

Usar kubectl

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Crie um arquivo chamado nginx-configmap.yaml e edite-o.

    vi nginx-configmap.yaml

    Como mostrado no exemplo a seguir, depois que o volume de ConfigMap é montado, um arquivo de configuração com a chave como o nome do arquivo e o valor como o conteúdo do arquivo é gerado no diretório /etc/config do contêiner.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-configmap
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-configmap
      template:
        metadata:
          labels:
            app: nginx-configmap
        spec:
          containers:
          - name: container-1
            image: nginx:latest
            volumeMounts:
            - name: config-volume
              mountPath: /etc/config            # Mount to the /etc/config directory.
              readOnly: true
        volumes:
        - name: config-volume
          configMap:
            name: cce-configmap                 # Name of the referenced ConfigMap.

  3. Crie uma carga de trabalho.

    kubectl apply -f nginx-configmap.yaml

  4. Depois que a carga de trabalho é executada corretamente, os arquivos SPECIAL_LEVEL e SPECIAL_TYPE são gerados no diretório /etc/config. O conteúdo dos arquivos são Hello e CCE, respectivamente.

    1. Execute o seguinte comando para exibir o pod criado:
      kubectl get pod | grep nginx-configmap
      Saída esperada:
      nginx-configmap-***   1/1     Running   0              2m18s
    2. Execute o seguinte comando para exibir o arquivo SPECIAL_LEVEL ou SPECIAL_TYPE no pod:
      kubectl exec nginx-configmap-*** -- /etc/config/SPECIAL_LEVEL

      Saída esperada:

      Hello