 1ffb13d2e6
			
		
	
	1ffb13d2e6
	
	
	
		
			
			Initial draft Resolve merge conflict Story: 49622 Change-Id: Ied162cb87fb203fe4e1c3b7f719bac1b8cc3feaa Signed-off-by: Ron Stone <ronald.stone@windriver.com>
		
			
				
	
	
		
			206 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 
 | |
| .. cms1597171128588
 | |
| .. _configure-vault-using-the-cli:
 | |
| 
 | |
| ===================================
 | |
| Configure Vault Using the Vault CLI
 | |
| ===================================
 | |
| 
 | |
| After Vault has been installed, you can configure Vault for use with |prod|
 | |
| using the |CLI|. This section describes the minimum configuration
 | |
| requirements for server secrets for hosted Kubernetes applications.
 | |
| 
 | |
| .. rubric:: |context|
 | |
| 
 | |
| You can configure Vault by logging into a Vault server pod and using Vault CLI.
 | |
| 
 | |
| .. rubric:: |proc|
 | |
| 
 | |
| #.  Get the root token for logging into Vault.
 | |
| 
 | |
|     .. code-block:: none
 | |
| 
 | |
|         $ ROOT_TOKEN="$( kubectl get secrets -n vault cluster-key-root \
 | |
|           -o jsonpath='{.data.strdata}' | base64 -d )"
 | |
| 
 | |
| #.  Log in to the Vault server container.
 | |
| 
 | |
|     .. code-block:: none
 | |
| 
 | |
|         $ kubectl exec -it -n vault sva-vault-0 -- sh
 | |
| 
 | |
| 
 | |
|     #.  Log into Vault, and provide the root token when prompted. Refer to
 | |
|         step 1 for the root token.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault login -no-print
 | |
| 
 | |
|     #.  Enable the Kubernetes Auth method.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault auth enable kubernetes
 | |
| 
 | |
|     #.  Configure the Kubernetes Auth method.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault write auth/kubernetes/config kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443"
 | |
| 
 | |
| 
 | |
|     #.  Verify the Kubernetes Auth method.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault auth list
 | |
| 
 | |
|         and
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault read auth/kubernetes/config
 | |
| 
 | |
| 
 | |
| #.  Enable a secrets engine at the path "secret".
 | |
| 
 | |
|     Vault supports a variety of secret engines, as an example, create a
 | |
|     **kv-v2** secrets engine. The **kv-v2** secrets engine allows for
 | |
|     storing arbitrary key-value pairs. Secrets engines are enabled at a
 | |
|     "path" in Vault. When a request comes to Vault, the router
 | |
|     automatically routes anything with the route prefix to the secrets
 | |
|     engine. In this way, each secrets engine defines its own paths and
 | |
|     properties. To the user, secrets engines behave similar to a virtual
 | |
|     filesystem, supporting operations like read, write, and delete.
 | |
| 
 | |
|     .. code-block:: none
 | |
| 
 | |
|         $ vault secrets enable -path=secret kv-v2
 | |
| 
 | |
|     For more information, see:
 | |
| 
 | |
|     -   `https://www.vaultproject.io/docs/secrets
 | |
|         <https://www.vaultproject.io/docs/secrets>`__
 | |
| 
 | |
|     -   `https://www.vaultproject.io/docs/secrets/kv/kv-v2
 | |
|         <https://www.vaultproject.io/docs/secrets/kv/kv-v2>`__
 | |
| 
 | |
| 
 | |
| #.  Create a sample policy and role for allowing access to the configured
 | |
|     **kv-v2** secrets engine.
 | |
| 
 | |
|     A Vault policy specifies read and/or write capabilities for a
 | |
|     particular secret engine path, and the Vault role binds a specific
 | |
|     Kubernetes service account to a policy.
 | |
| 
 | |
| 
 | |
|     #.  Create a policy.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault policy write basic-secret-policy - <<EOF
 | |
|             path "secret/data/basic-secret/*" {
 | |
|               capabilities = ["read"]
 | |
|             }
 | |
|             EOF
 | |
| 
 | |
| 
 | |
|         For more information, see
 | |
|         `https://www.vaultproject.io/docs/concepts/policies
 | |
|         <https://www.vaultproject.io/docs/concepts/policies>`__.
 | |
| 
 | |
|     #.  Create the role mapped to the policy.
 | |
| 
 | |
|         .. note::
 | |
|             The service account and namespace used for the values below must
 | |
|             exist on the kubernetes cluster.
 | |
| 
 | |
| 
 | |
|             -   **bound_service_account_names**
 | |
| 
 | |
|             -   **bound_service_account_namespaces**
 | |
| 
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault write auth/kubernetes/role/basic-secret-role bound_service_account_names=basic-secret bound_service_account_namespaces=test policies=basic-secret-policy ttl=24h
 | |
| 
 | |
|     #.  Verify the policy.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault policy read basic-secret-policy
 | |
| 
 | |
|     #.  Verify the role.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault read auth/kubernetes/role/basic-secret-role
 | |
| 
 | |
| 
 | |
| #.  Create an initial example secret in the configured **kv-v2** secrets
 | |
|     engine.
 | |
| 
 | |
| 
 | |
|     #.  Create a secret.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault kv put secret/basic-secret/helloworld username="test" password="supersecret"
 | |
| 
 | |
|     #.  Verify the secret.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault kv get secret/basic-secret/helloworld
 | |
| 
 | |
| 
 | |
| #.  (Optional) To enable audit logging, use the steps below:
 | |
| 
 | |
|     .. note::
 | |
|         It is recommended to enable file logging and stdout.
 | |
| 
 | |
| 
 | |
|     #.  Enable Vault logging to file for persistent log storage.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault audit enable -path="/vault/audit/vault_audit.log" file file_path=/vault/audit/vault_audit.log
 | |
| 
 | |
|     #.  Enable Vault logging to stdout for easy log reading from the Vault container.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault audit enable -path="stdout" file file_path=stdout
 | |
| 
 | |
|     #.  Verify the configuration.
 | |
| 
 | |
|         .. code-block:: none
 | |
| 
 | |
|             $ vault audit list
 | |
| 
 | |
| 
 | |
| #.  Delete the cached credentials to log out of Vault.
 | |
| 
 | |
|     .. code-block:: none
 | |
| 
 | |
|         $ rm ~/.vault-token
 | |
| 
 | |
| #.  Exit the Vault container.
 | |
| 
 | |
|     .. code-block:: none
 | |
| 
 | |
|         $ exit
 | |
| 
 | |
| 
 | |
| ..
 | |
|   .. rubric:: |result|
 | |
| 
 | |
| .. xbooklink
 | |
| 
 | |
|    For more information, see, |usertasks-doc|::ref:`Vault Overview
 | |
|    <kubernetes-user-tutorials-vault-overview>`.
 | |
| 
 | |
| 
 |