Update Security
Fixed merge conflict (RS) Signed-off-by: Rafael Jardim <rafaeljordao.jardim@windriver.com> Change-Id: I30b882a14196525f440db1108a56bbf862dfaf55 Signed-off-by: Ron Stone <ronald.stone@windriver.com>
This commit is contained in:
@@ -39,7 +39,7 @@ For example:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
apiserver_cert_sans: <trusted-ca-bundle-pem-file>
|
ssl_ca_cert: /path/to/ssl_ca_cert_file
|
||||||
|
|
||||||
The *ssl\_ca\_cert* value is the absolute path of the file containing the
|
The *ssl\_ca\_cert* value is the absolute path of the file containing the
|
||||||
|CA| certificate\(s\) to trust. The certificate\(s\) must be in |PEM| format
|
|CA| certificate\(s\) to trust. The certificate\(s\) must be in |PEM| format
|
||||||
@@ -62,14 +62,14 @@ From the command line, run the :command:`certificate-install` command.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install -m ssl_ca <trusted-ca-bundle-pem-file>
|
~(keystone_admin)]$ system certificate-install -m ssl_ca <trusted-ca-bundle-pem-file>
|
||||||
|
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install -m ssl_ca external-registry-ca-crt.pem
|
~(keystone_admin)]$ system certificate-install -m ssl_ca external-registry-ca-crt.pem
|
||||||
WARNING: For security reasons, the original certificate,
|
WARNING: For security reasons, the original certificate,
|
||||||
containing the private key, will be removed,
|
containing the private key, will be removed,
|
||||||
once the private key is processed.
|
once the private key is processed.
|
||||||
@@ -100,7 +100,7 @@ running the following command:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-list
|
~(keystone_admin)]$ system certificate-list
|
||||||
|
|
||||||
where, all entries with certtype = ssl\_ca are trusted |CA| certificates.
|
where, all entries with certtype = ssl\_ca are trusted |CA| certificates.
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ running the following command:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-uninstall -m ssl_ca <UUID>
|
~(keystone_admin)]$ system certificate-uninstall -m ssl_ca <UUID>
|
||||||
|
|
||||||
where, <UUID> is the UUID of the ssl\_ca certtype to be removed.
|
where, <UUID> is the UUID of the ssl\_ca certtype to be removed.
|
||||||
|
|
||||||
|
@@ -23,3 +23,6 @@ This is done for:
|
|||||||
Both software patches and loads are cryptographically signed as part of
|
Both software patches and loads are cryptographically signed as part of
|
||||||
|org| builds and are authenticated before they are loaded on a system via
|
|org| builds and are authenticated before they are loaded on a system via
|
||||||
|prod| REST APIs, CLIs or GUI.
|
|prod| REST APIs, CLIs or GUI.
|
||||||
|
|
||||||
|
.. xbooklink For more information on patches, see |updates-doc|: :ref:`Software Updates
|
||||||
|
<software-updates-and-upgrades-software-updates>`.
|
@@ -32,7 +32,7 @@ You can change the duration of the lockout using the following CLI command:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-modify horizon auth \
|
~(keystone_admin)]$ system service-parameter-modify horizon auth \
|
||||||
lockout_seconds=<duration>
|
lockout_seconds=<duration>
|
||||||
|
|
||||||
where <duration> is the time in seconds.
|
where <duration> is the time in seconds.
|
||||||
@@ -42,7 +42,7 @@ using the following CLI command:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-modify horizon auth \
|
~(keystone_admin)]$ system service-parameter-modify horizon auth \
|
||||||
lockout_retries=<attempts>
|
lockout_retries=<attempts>
|
||||||
|
|
||||||
where <attempts> is the number of allowed retries.
|
where <attempts> is the number of allowed retries.
|
||||||
@@ -51,7 +51,7 @@ For the changes to take effect, you must apply them:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply horizon
|
~(keystone_admin)]$ system service-parameter-apply horizon
|
||||||
|
|
||||||
Allow about 30 seconds after applying the changes for the Web service to
|
Allow about 30 seconds after applying the changes for the Web service to
|
||||||
restart.
|
restart.
|
||||||
|
@@ -24,7 +24,7 @@ list the configured **HTTP**, and **HTTPS** ports.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-list --service http
|
~(keystone_admin)]$ system service-parameter-list --service http
|
||||||
+---------+----------+---------+------------+-------+------------+--------+
|
+---------+----------+---------+------------+-------+------------+--------+
|
||||||
| uuid | service | section | name | value |personality |Resource|
|
| uuid | service | section | name | value |personality |Resource|
|
||||||
+---------+----------+---------+------------+-------+------------+--------+
|
+---------+----------+---------+------------+-------+------------+--------+
|
||||||
@@ -39,16 +39,16 @@ list the configured **HTTP**, and **HTTPS** ports.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-modify http config http_port=8090
|
~(keystone_admin)]$ system service-parameter-modify http config http_port=8090
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-modify http config https_port=9443
|
~(keystone_admin)]$ system service-parameter-modify http config https_port=9443
|
||||||
|
|
||||||
|
|
||||||
#. Apply the service parameter change.
|
#. Apply the service parameter change.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply http
|
~(keystone_admin)]$ system service-parameter-apply http
|
||||||
Applying http service parameters
|
Applying http service parameters
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
@@ -21,14 +21,14 @@ do so from a remote workstation.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl config set-cluster mywrcpcluster --server=https://<oam-floating-ip>:6443
|
~(keystone_admin)]$ kubectl config set-cluster mywrcpcluster --server=https://<oam-floating-ip>:6443
|
||||||
|
|
||||||
|
|
||||||
#. Set up a context for **testuser** in this cluster in kubectl.
|
#. Set up a context for **testuser** in this cluster in kubectl.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl config set-context testuser@mywrcpcluster --cluster=mywrcpcluster --user=testuser
|
~(keystone_admin)]$ kubectl config set-context testuser@mywrcpcluster --cluster=mywrcpcluster --user=testuser
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@ you can do so at any time using service parameters.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-add kubernetes kube_apiserver oidc_client_id=stx-oidc-client-app
|
~(keystone_admin)]$ system service-parameter-add kubernetes kube_apiserver oidc_client_id=stx-oidc-client-app
|
||||||
|
|
||||||
|
|
||||||
- oidc\_client\_id=<client>
|
- oidc\_client\_id=<client>
|
||||||
@@ -67,7 +67,7 @@ you can do so at any time using service parameters.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply kubernetes
|
~(keystone_admin)]$ system service-parameter-apply kubernetes
|
||||||
|
|
||||||
For more information on |OIDC| Authentication for subclouds, see
|
For more information on |OIDC| Authentication for subclouds, see
|
||||||
:ref:`Centralized OIDC Authentication Setup for Distributed Cloud
|
:ref:`Centralized OIDC Authentication Setup for Distributed Cloud
|
||||||
|
@@ -55,6 +55,18 @@ required system maintenance, administration and troubleshooting tasks.
|
|||||||
% echo "export KUBECONFIG=~/.kube/config" >> ~/.profile
|
% echo "export KUBECONFIG=~/.kube/config" >> ~/.profile
|
||||||
% exit
|
% exit
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The command
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
echo "export KUBECONFIG=~/.kube/config" >> ~/.profile
|
||||||
|
|
||||||
|
shown above is specific to CentOS. Substitute the correct syntax for your operating system. The following alternative is for Ubuntu:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
|
||||||
|
|
||||||
#. Confirm that the <KUBECONFIG> environment variable is set correctly
|
#. Confirm that the <KUBECONFIG> environment variable is set correctly
|
||||||
and that :command:`kubectl` commands are functioning properly.
|
and that :command:`kubectl` commands are functioning properly.
|
||||||
@@ -80,7 +92,7 @@ For example:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system host-list
|
~(keystone_admin)]$ system host-list
|
||||||
+----+--------------+-------------+----------------+-------------+--------------+
|
+----+--------------+-------------+----------------+-------------+--------------+
|
||||||
| id | hostname | personality | administrative | operational | availability |
|
| id | hostname | personality | administrative | operational | availability |
|
||||||
+----+--------------+-------------+----------------+-------------+--------------+
|
+----+--------------+-------------+----------------+-------------+--------------+
|
||||||
@@ -104,7 +116,7 @@ For example:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ fm alarm-list
|
~(keystone_admin)]$ fm alarm-list
|
||||||
|
|
||||||
+-------+---------------+---------------------+----------+---------------+
|
+-------+---------------+---------------------+----------+---------------+
|
||||||
| Alarm | Reason Text | Entity ID | Severity | Time Stamp |
|
| Alarm | Reason Text | Entity ID | Severity | Time Stamp |
|
||||||
@@ -125,10 +137,10 @@ For example:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl get nodes
|
~(keystone_admin)]$ kubectl get nodes
|
||||||
NAME STATUS ROLES AGE VERSION
|
NAME STATUS ROLES AGE VERSION
|
||||||
controller-0 Ready master 5d19h v1.13.5
|
controller-0 Ready master 5d19h v1.13.5
|
||||||
~(keystone_admin)$ kubectl get pods
|
~(keystone_admin)]$ kubectl get pods
|
||||||
NAME READY STATUS RESTARTS AGE
|
NAME READY STATUS RESTARTS AGE
|
||||||
dashboard-kubernetes-dashboard-7749d97f95-bzp5w 1/1 Running 0 3d18h
|
dashboard-kubernetes-dashboard-7749d97f95-bzp5w 1/1 Running 0 3d18h
|
||||||
|
|
||||||
|
@@ -82,22 +82,22 @@ and uploaded by default.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl create secret tls local-dex.tls --cert=ssl/dex-cert.pem --key=ssl/dex-key.pem -n kube-system
|
~(keystone_admin)]$ kubectl create secret tls local-dex.tls --cert=ssl/dex-cert.pem --key=ssl/dex-key.pem -n kube-system
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl create secret generic dex-client-secret --from-file=/home/sysadmin/ssl/dex-ca.pem -n kube-system
|
~(keystone_admin)]$ kubectl create secret generic dex-client-secret --from-file=/home/sysadmin/ssl/dex-ca.pem -n kube-system
|
||||||
|
|
||||||
Create the secret **wadcert** with the |CA|'s certificate that signed
|
Create the secret **wadcert** with the |CA|'s certificate that signed
|
||||||
the Active Directory's certificate using the following command:
|
the Active Directory's certificate using the following command:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl create secret generic wadcert --from-file=ssl/AD_CA.cer -n kube-system
|
~(keystone_admin)]$ kubectl create secret generic wadcert --from-file=ssl/AD_CA.cer -n kube-system
|
||||||
|
|
||||||
#. Specify user overrides for **oidc-auth-apps** application, by using the following command:
|
#. Specify user overrides for **oidc-auth-apps** application, by using the following command:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system helm-override-update oidc-auth-apps dex kube-system --values /home/sysadmin/dex-overrides.yaml
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps dex kube-system --values /home/sysadmin/dex-overrides.yaml
|
||||||
|
|
||||||
The dex-overrides.yaml file contains the desired dex helm chart overrides
|
The dex-overrides.yaml file contains the desired dex helm chart overrides
|
||||||
\(that is, the LDAP connector configuration for the Active Directory
|
\(that is, the LDAP connector configuration for the Active Directory
|
||||||
@@ -119,9 +119,44 @@ and uploaded by default.
|
|||||||
Directory service login information \(that is, bindDN, and bindPW\), and
|
Directory service login information \(that is, bindDN, and bindPW\), and
|
||||||
example :command:`userSearch`, and :command:`groupSearch` clauses.
|
example :command:`userSearch`, and :command:`groupSearch` clauses.
|
||||||
|
|
||||||
|
\(Optional\) There is a default secret in the dex configuration for
|
||||||
|
**staticClients**. You can change this using helm overrides. For example,
|
||||||
|
to change the secret, first run the following command to see the default
|
||||||
|
settings. In this example, 10.10.10.2 is the |prod-long| |OAM| floating IP
|
||||||
|
address.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ system helm-override-show oidc-auth-apps dex kube-system
|
||||||
|
|
||||||
|
config:
|
||||||
|
staticClients:
|
||||||
|
- id: stx-oidc-client-app
|
||||||
|
name: STX OIDC Client app
|
||||||
|
redirectURIs: ['https://10.10.10.2:30555/callback']
|
||||||
|
secret: St8rlingX
|
||||||
|
|
||||||
|
Change the secret from the output and copy the entire configuration section
|
||||||
|
shown above in to your dex overrides file shown in the example below.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Do NOT forget to include the id, name, and redirectURIs parameters.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
There is an internal **client\_secret** that is used between the
|
||||||
|
oidc-client container and the dex container. It is recommended that you
|
||||||
|
configure a unique, more secure **client\_secret** by specifying the
|
||||||
|
value in the dex overrides file, as shown in the example below.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
config:
|
config:
|
||||||
|
staticClients:
|
||||||
|
- id: stx-oidc-client-app
|
||||||
|
name: STX OIDC Client app
|
||||||
|
redirectURIs: ['<OAM floating IP address>/callback']
|
||||||
|
secret: BetterSecret
|
||||||
|
client_secret: BetterSecret
|
||||||
expiry:
|
expiry:
|
||||||
idTokens: "10h"
|
idTokens: "10h"
|
||||||
connectors:
|
connectors:
|
||||||
@@ -134,7 +169,7 @@ and uploaded by default.
|
|||||||
insecureNoSSL: false
|
insecureNoSSL: false
|
||||||
insecureSkipVerify: false
|
insecureSkipVerify: false
|
||||||
bindDN: cn=Administrator,cn=Users,dc=cumulus,dc=wrs,dc=com
|
bindDN: cn=Administrator,cn=Users,dc=cumulus,dc=wrs,dc=com
|
||||||
bindPW: Li69nux*
|
bindPW: [<password>]
|
||||||
usernamePrompt: Username
|
usernamePrompt: Username
|
||||||
userSearch:
|
userSearch:
|
||||||
baseDN: ou=Users,ou=Titanium,dc=cumulus,dc=wrs,dc=com
|
baseDN: ou=Users,ou=Titanium,dc=cumulus,dc=wrs,dc=com
|
||||||
@@ -155,7 +190,7 @@ and uploaded by default.
|
|||||||
secretName: wadcert
|
secretName: wadcert
|
||||||
extraVolumeMounts:
|
extraVolumeMounts:
|
||||||
- name: certdir
|
- name: certdir
|
||||||
mountPath: /etc/ssl/certs/adcer
|
mountPath: /etc/ssl/certs/adcert
|
||||||
|
|
||||||
If more than one Windows Active Directory service is required for
|
If more than one Windows Active Directory service is required for
|
||||||
authenticating the different users of the |prod|, multiple '**ldap**'
|
authenticating the different users of the |prod|, multiple '**ldap**'
|
||||||
@@ -170,11 +205,35 @@ and uploaded by default.
|
|||||||
Whenever you use multiple '**ldap**' type connectors, ensure you use
|
Whenever you use multiple '**ldap**' type connectors, ensure you use
|
||||||
unique '**name:**' and '**id:**' parameters for each connector.
|
unique '**name:**' and '**id:**' parameters for each connector.
|
||||||
|
|
||||||
|
#. An override in the secrets in the dex helm chart must be accompanied by an
|
||||||
|
override in the oidc-client helm chart.
|
||||||
|
|
||||||
|
The following override is sufficient for changing the secret in the
|
||||||
|
/home/sysadmin/oidc-client-overrides.yaml file.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
config:
|
||||||
|
client_secret: BetterSecret
|
||||||
|
|
||||||
|
Apply the oidc-client overrides using the following command:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps oidc-client kube-system --values /home/sysadmin/oidc-client-overrides.yaml
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you need to manually override the secrets, the client\_secret in the
|
||||||
|
oidc-client overrides must match the staticClients secret and
|
||||||
|
client\_secret in the dex overrides, otherwise the oidc-auth |CLI|
|
||||||
|
client will not function.
|
||||||
|
|
||||||
#. Use the :command:`system application-apply` command to apply the
|
#. Use the :command:`system application-apply` command to apply the
|
||||||
configuration:
|
configuration:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-apply oidc-auth-apps
|
~(keystone_admin)]$ system application-apply oidc-auth-apps
|
||||||
|
|
||||||
|
|
||||||
|
@@ -36,6 +36,9 @@ either of the above two methods.
|
|||||||
:ref:`Configure Container-backed Remote CLIs and Clients
|
:ref:`Configure Container-backed Remote CLIs and Clients
|
||||||
<security-configure-container-backed-remote-clis-and-clients>`
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
|
:ref:`Using Container-backed Remote CLIs and Clients
|
||||||
|
<using-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
||||||
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ remotely.
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If you are using container-backed helm CLIs and clients \(method 1\),
|
If you are using container-backed helm CLIs and clients \(method 1\),
|
||||||
ensure you change directories to <$HOME>/remote\_wd
|
ensure you change directories to <$HOME>/remote\_cli\_wd
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ remotely.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ NAMESPACE=default
|
~(keystone_admin)]$ NAMESPACE=default
|
||||||
|
|
||||||
#. Set up accounts, roles and bindings.
|
#. Set up accounts, roles and bindings.
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ remotely.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% cat <<EOF > default-tiller-sa.yaml
|
~(keystone_admin)]$ cat <<EOF > default-tiller-sa.yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
@@ -81,16 +81,16 @@ remotely.
|
|||||||
name: tiller
|
name: tiller
|
||||||
namespace: default
|
namespace: default
|
||||||
EOF
|
EOF
|
||||||
% kubectl apply -f default-tiller-sa.yaml
|
~(keystone_admin)]$ kubectl apply -f default-tiller-sa.yaml
|
||||||
|
|
||||||
|
|
||||||
#. Execute the following commands as an admin-level user.
|
#. Execute the following commands as an admin-level user.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl create clusterrole tiller --verb get
|
~(keystone_admin)]$ kubectl create clusterrole tiller --verb get
|
||||||
--resource namespaces
|
--resource namespaces
|
||||||
~(keystone_admin)$ kubectl create clusterrolebinding tiller
|
~(keystone_admin)]$ kubectl create clusterrolebinding tiller
|
||||||
--clusterrole tiller --serviceaccount ${NAMESPACE}:tiller
|
--clusterrole tiller --serviceaccount ${NAMESPACE}:tiller
|
||||||
|
|
||||||
|
|
||||||
@@ -98,13 +98,13 @@ remotely.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ helm init --service-account=tiller
|
~(keystone_admin)]$ helm init --service-account=tiller
|
||||||
--tiller-namespace=$NAMESPACE --output yaml | sed 's@apiVersion:
|
--tiller-namespace=$NAMESPACE --output yaml | sed 's@apiVersion:
|
||||||
extensions/v1beta1@apiVersion: apps/v1@' | sed 's@ replicas: 1@
|
extensions/v1beta1@apiVersion: apps/v1@' | sed 's@ replicas: 1@
|
||||||
replicas: 1\n \ selector: {"matchLabels": {"app": "helm", "name":
|
replicas: 1\n \ selector: {"matchLabels": {"app": "helm", "name":
|
||||||
"tiller"}}@' > helm-init.yaml
|
"tiller"}}@' > helm-init.yaml
|
||||||
~(keystone_admin)$ kubectl apply -f helm-init.yaml
|
~(keystone_admin)]$ kubectl apply -f helm-init.yaml
|
||||||
~(keystone_admin)$ helm init –client-only
|
~(keystone_admin)]$ helm init --client-only --home "./.helm"
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Ensure that each of the patterns between single quotes in the above
|
Ensure that each of the patterns between single quotes in the above
|
||||||
@@ -144,7 +144,7 @@ example:
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If you are using container-backed helm CLI and Client \(method 1\), then
|
If you are using container-backed helm CLI and Client \(method 1\), then
|
||||||
you change directory to <$HOME>/remote\_wd and include the following
|
you change directory to <$HOME>/remote\_cli\_wd and include the following
|
||||||
option on all helm commands:
|
option on all helm commands:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
@@ -160,6 +160,9 @@ example:
|
|||||||
:ref:`Configure Container-backed Remote CLIs and Clients
|
:ref:`Configure Container-backed Remote CLIs and Clients
|
||||||
<security-configure-container-backed-remote-clis-and-clients>`
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
|
:ref:`Using Container-backed Remote CLIs and Clients
|
||||||
|
<using-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
||||||
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
||||||
|
|
||||||
|
@@ -133,7 +133,7 @@ The following steps use Vault's REST API and is run from controller-0.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
$ curl --cacert /home/sysadmin/vault_ca.pem --header "X-Vault-Token:$ROOT_TOKEN" -H "Content-Type: application/json" -X POST -d '{"username":"pvtest","password":"Li69nux*"}' https://sva-vault.vault.svc.cluster.local:8200/v1/secret/basic-secret/helloworld
|
$ curl --cacert /home/sysadmin/vault_ca.pem --header "X-Vault-Token:$ROOT_TOKEN" -H "Content-Type: application/json" -X POST -d '{"username":"pvtest","password":"<password>"}' https://sva-vault.vault.svc.cluster.local:8200/v1/secret/basic-secret/helloworld
|
||||||
|
|
||||||
#. Verify the secret.
|
#. Verify the secret.
|
||||||
|
|
||||||
|
@@ -23,24 +23,24 @@ an admin service account with cluster-admin role, use the following procedure:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% cat <<EOF > joe-admin.yaml
|
% cat <<EOF > admin-user.yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: joe-admin
|
name: admin-user
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRoleBinding
|
kind: ClusterRoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: joe-admin
|
name: admin-user
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
name: cluster-admin
|
name: cluster-admin
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: joe-admin
|
name: admin-user
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ an admin service account with cluster-admin role, use the following procedure:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% kubectl apply -f joe-admin.yaml
|
% kubectl apply -f admin-user.yaml
|
||||||
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
@@ -6,24 +6,23 @@
|
|||||||
Create LDAP Linux Accounts
|
Create LDAP Linux Accounts
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|prod| includes a script for creating LDAP Linux accounts with built-in
|
|prod| includes a script for creating |LDAP| Linux accounts.
|
||||||
Keystone user support.
|
|
||||||
|
|
||||||
.. rubric:: |context|
|
.. rubric:: |context|
|
||||||
|
|
||||||
The :command:`ldapusersetup` command provides an interactive method for
|
.. note::
|
||||||
setting up LDAP Linux user accounts with access to StarlingX commands. You
|
For security reasons, it is recommended that ONLY admin level users be
|
||||||
can assign a limited shell or a bash shell.
|
allowed to |SSH| to the nodes of the |prod|. Non-admin level users should
|
||||||
|
strictly use remote |CLIs| or remote web GUIs.
|
||||||
|
|
||||||
Users have the option of providing Keystone credentials at login, and can
|
The :command:`ldapusersetup` command provides an interactive method for setting
|
||||||
establish or change Keystone credentials at any time during a session.
|
up |LDAP| Linux user accounts.
|
||||||
Keystone credentials persist for the duration of the session.
|
|
||||||
|
|
||||||
Centralized management is implemented using two LDAP servers, one running on
|
Centralized management is implemented using two |LDAP| servers, one running on
|
||||||
each controller node. LDAP server synchronization is automatic using the
|
each controller node. |LDAP| server synchronization is automatic using the
|
||||||
native LDAP content synchronization protocol.
|
native |LDAP| content synchronization protocol.
|
||||||
|
|
||||||
A set of LDAP commands is available to operate on LDAP user accounts. The
|
A set of |LDAP| commands is available to operate on |LDAP| user accounts. The
|
||||||
commands are installed in the directory /usr/local/sbin, and are available to
|
commands are installed in the directory /usr/local/sbin, and are available to
|
||||||
any user account in the sudoers list. Included commands are
|
any user account in the sudoers list. Included commands are
|
||||||
:command:`lsldap`, :command:`ldapadduser`, :command:`ldapdeleteuser`, and
|
:command:`lsldap`, :command:`ldapadduser`, :command:`ldapdeleteuser`, and
|
||||||
@@ -43,18 +42,6 @@ as illustrated below.
|
|||||||
|
|
||||||
For convenience, identify the user's Keystone account user name in |prod-long|.
|
For convenience, identify the user's Keystone account user name in |prod-long|.
|
||||||
|
|
||||||
.. note::
|
|
||||||
There is an M:M relationship between a Keystone user account and a user
|
|
||||||
Linux account. That is, the same Keystone user account may be used across
|
|
||||||
multiple Linux accounts. For example, the Keystone user **tenant user**
|
|
||||||
may be used by several Linux users, such as Kam, Greg, and Jim.
|
|
||||||
Conversely, contingent on the policy of the organization, 3 Keystone
|
|
||||||
cloud users \(Kam, Greg, and Jim\), may be used by a single Linux
|
|
||||||
account: **operator**. That is, Kam logs into |prod| with the
|
|
||||||
**operator** account, and sources Kam's Keystone user account. Jim does
|
|
||||||
the same and logs into |prod| with the **operator** account, but sources
|
|
||||||
Jim's Keystone user account.
|
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
#. Log in as **sysadmin**, and start the :command:`ldapusersetup` script.
|
#. Log in as **sysadmin**, and start the :command:`ldapusersetup` script.
|
||||||
@@ -70,39 +57,15 @@ For convenience, identify the user's Keystone account user name in |prod-long|.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Enter username to add to LDAP:
|
Enter username to add to |LDAP|:
|
||||||
|
|
||||||
For convenience, use the same name as the one assigned for the user's
|
|
||||||
Keystone account. \(This example uses **user1**\). When the LDAP user
|
|
||||||
logs in and establishes Keystone credentials, the LDAP user name is
|
|
||||||
offered as the default Keystone user name.
|
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Successfully added user user1 to LDAP
|
Successfully added user user1 to |LDAP|
|
||||||
Successfully set password for user user1
|
Successfully set password for user user1
|
||||||
|
|
||||||
|
|
||||||
#. Specify whether to provide a limited shell or a bash shell.
|
#. Specify a secondary user group for this |LDAP| user.
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
|
|
||||||
Select Login Shell option # [2]:
|
|
||||||
1) Bash
|
|
||||||
2) Lshell
|
|
||||||
|
|
||||||
To provide a limited shell with access to the StarlingX CLI only,
|
|
||||||
specify the Lshell option.
|
|
||||||
|
|
||||||
If you select Bash, you are offered the option to add the user to the
|
|
||||||
sudoer list:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Add user1 to sudoer list? (yes/No):
|
|
||||||
|
|
||||||
#. Specify a secondary user group for this LDAP user.
|
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
@@ -116,7 +79,7 @@ For convenience, identify the user's Keystone account user name in |prod-long|.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Successfully modified user entry uid=ldapuser1, ou=People, dc=cgcs, dc=local in LDAP
|
Successfully modified user entry uid=ldapuser1, ou=People, dc=cgcs, dc=local in |LDAP|
|
||||||
Updating password expiry to 90 days
|
Updating password expiry to 90 days
|
||||||
|
|
||||||
#. Change the warning period before the password expires.
|
#. Change the warning period before the password expires.
|
||||||
@@ -139,7 +102,7 @@ On completion of the script, the command prompt is displayed.
|
|||||||
|
|
||||||
.. rubric:: |result|
|
.. rubric:: |result|
|
||||||
|
|
||||||
The LDAP account is created. For information about the user login process,
|
The |LDAP| account is created. For information about the user login process, see
|
||||||
see :ref:`Establish Keystone Credentials from a Linux Account
|
ref:`For StarlingX and Platform OpenStack CLIs from a Local LDAP Linux Account
|
||||||
<establish-keystone-credentials-from-a-linux-account>`.
|
Login <establish-keystone-credentials-from-a-linux-account>`.
|
||||||
|
|
||||||
|
@@ -21,44 +21,44 @@ You can remove Windows Active Directory authentication from |prod-long|.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-list
|
~(keystone_admin)]$ system service-parameter-list
|
||||||
|
|
||||||
#. Delete each parameter.
|
#. Delete each parameter.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-delete <UUID>
|
~(keystone_admin)]$ system service-parameter-delete <UUID>
|
||||||
|
|
||||||
#. Apply the changes.
|
#. Apply the changes.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply kubernetes
|
~(keystone_admin)]$ system service-parameter-apply kubernetes
|
||||||
|
|
||||||
|
|
||||||
#. Uninstall oidc-auth-apps.
|
#. Uninstall oidc-auth-apps.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-remove oidc-auth-apps
|
~(keystone_admin)]$ system application-remove oidc-auth-apps
|
||||||
|
|
||||||
#. Clear the helm-override configuration.
|
#. Clear the helm-override configuration.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system helm-override-update oidc-auth-apps dex kube-system --reset-values
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps dex kube-system --reset-values
|
||||||
~(keystone_admin)$ system helm-override-show oidc-auth-apps dex kube-system
|
~(keystone_admin)]$ system helm-override-show oidc-auth-apps dex kube-system
|
||||||
|
|
||||||
~(keystone_admin)$ system helm-override-update oidc-auth-apps oidc-client kube-system --reset-values
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps oidc-client kube-system --reset-values
|
||||||
~(keystone_admin)$ system helm-override-show oidc-auth-apps oidc-client kube-system
|
~(keystone_admin)]$ system helm-override-show oidc-auth-apps oidc-client kube-system
|
||||||
|
|
||||||
#. Remove secrets that contain certificate data.
|
#. Remove secrets that contain certificate data.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl delete secret local-dex.tls -n kube-system
|
~(keystone_admin)]$ kubectl delete secret local-dex.tls -n kube-system
|
||||||
~(keystone_admin)$ kubectl delete secret dex-client-secret -n kube-system
|
~(keystone_admin)]$ kubectl delete secret dex-client-secret -n kube-system
|
||||||
~(keystone_admin)$ kubectl delete secret wadcert -n kube-system
|
~(keystone_admin)]$ kubectl delete secret wadcert -n kube-system
|
||||||
|
|
||||||
#. Remove any |RBAC| RoleBindings added for |OIDC| users and/or groups.
|
#. Remove any |RBAC| RoleBindings added for |OIDC| users and/or groups.
|
||||||
|
|
||||||
|
@@ -16,12 +16,12 @@ disable pod security policy checking.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-delete <uuid>
|
~(keystone_admin)]$ system service-parameter-delete <uuid>
|
||||||
|
|
||||||
#. Apply the Kubernetes system parameters.
|
#. Apply the Kubernetes system parameters.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply kubernetes
|
~(keystone_admin)]$ system service-parameter-apply kubernetes
|
||||||
|
|
||||||
|
|
||||||
|
@@ -36,13 +36,13 @@ When secure HTTPS connectivity is enabled, HTTP is disabled.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system modify --https_enabled true
|
~(keystone_admin)]$ system modify --https_enabled true
|
||||||
|
|
||||||
- To disable HTTPS for StarlingX REST and Web Server endpoints:
|
- To disable HTTPS for StarlingX REST and Web Server endpoints:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system modify --https_enabled false
|
~(keystone_admin)]$ system modify --https_enabled false
|
||||||
|
|
||||||
- Use the following command to display HTTPS settings:
|
- Use the following command to display HTTPS settings:
|
||||||
|
|
||||||
|
@@ -13,13 +13,13 @@ Enable Pod Security Policy Checking
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-add kubernetes kube_apiserver admission_plugins=PodSecurityPolicy
|
~(keystone_admin)]$ system service-parameter-add kubernetes kube_apiserver admission_plugins=PodSecurityPolicy
|
||||||
|
|
||||||
#. Apply the Kubernetes system parameters.
|
#. Apply the Kubernetes system parameters.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system service-parameter-apply kubernetes
|
~(keystone_admin)]$ system service-parameter-apply kubernetes
|
||||||
|
|
||||||
#. View the automatically added pod security policies.
|
#. View the automatically added pod security policies.
|
||||||
|
|
||||||
|
@@ -32,7 +32,7 @@ repository, see |admintasks-doc|: :ref:`Setting up a Public Repository
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system registry-image-tags quay.io/jetstack/cert-manager-acmesolver
|
~(keystone_admin)]$ system registry-image-tags quay.io/jetstack/cert-manager-acmesolver
|
||||||
|
|
||||||
#. Copy the cert-manager-acmesolver image, and replace <TAG> with the tag
|
#. Copy the cert-manager-acmesolver image, and replace <TAG> with the tag
|
||||||
you want to copy from previous step.
|
you want to copy from previous step.
|
||||||
@@ -53,7 +53,7 @@ repository, see |admintasks-doc|: :ref:`Setting up a Public Repository
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ cat <<EOF > cm-override-values.yaml
|
~(keystone_admin)]$ cat <<EOF > cm-override-values.yaml
|
||||||
acmesolver:
|
acmesolver:
|
||||||
image:
|
image:
|
||||||
repository: registry.local:9001/public/cert-manager-acmesolver
|
repository: registry.local:9001/public/cert-manager-acmesolver
|
||||||
@@ -64,13 +64,13 @@ repository, see |admintasks-doc|: :ref:`Setting up a Public Repository
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system helm-override-update --values cm-override-values.yaml cert-manager cert-manager cert-manager
|
~(keystone_admin)]$ system helm-override-update --values cm-override-values.yaml cert-manager cert-manager cert-manager
|
||||||
|
|
||||||
#. Reapply cert-manager.
|
#. Reapply cert-manager.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-apply cert-manager
|
~(keystone_admin)]$ system application-apply cert-manager
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
.. ivt1613762759967
|
||||||
|
.. _estabilish-credentials-for-linux-user-accounts:
|
||||||
|
|
||||||
|
=============================================
|
||||||
|
Establish Credentials for Linux User Accounts
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
You can establish credentials for StarlingX, Platform OpenStack |CLIs|, and
|
||||||
|
Kubernetes |CLIs| \(kubectl and helm\) for Linux user accounts.
|
||||||
|
|
||||||
|
For more information, see:
|
||||||
|
|
||||||
|
|
||||||
|
.. _estabilish-credentials-for-linux-user-accounts-ul-fjd-chd-s4b:
|
||||||
|
|
||||||
|
- :ref:`For StarlingX, Platform OpenStack and Kubernetes CLIs from the 'sysadmin' Linux Account Login <starlingx-openstack-kubernetes-from-stsadmin-account-login>`
|
||||||
|
|
||||||
|
- :ref:`For StarlingX and Platform OpenStack CLIs from a Local LDAP Linux Account Login <establish-keystone-credentials-from-a-linux-account>`
|
||||||
|
|
||||||
|
- :ref:`For Kubernetes CLI from a Local LDAP Linux Account Login <kubernetes-cli-from-local-ldap-linux-account-login>`
|
||||||
|
|
||||||
|
|
@@ -2,12 +2,13 @@
|
|||||||
.. fan1552681866651
|
.. fan1552681866651
|
||||||
.. _establish-keystone-credentials-from-a-linux-account:
|
.. _establish-keystone-credentials-from-a-linux-account:
|
||||||
|
|
||||||
===================================================
|
===============================================================================
|
||||||
Establish Keystone Credentials from a Linux Account
|
For StarlingX and Platform OpenStack CLIs from a Local LDAP Linux Account Login
|
||||||
===================================================
|
===============================================================================
|
||||||
|
|
||||||
The preferred method for establishing Keystone credentials is to log in to
|
You can establish Keystone credentials for executing StarlingX and Platform
|
||||||
an LDAP account created using :command:`ldapusersetup`.
|
OpenStack |CLIs| for a local |LDAP| user, if required; this is not setup by
|
||||||
|
default.
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
:local:
|
:local:
|
||||||
@@ -19,110 +20,43 @@ For more information about :command:`ldapusersetup`, see :ref:`Create LDAP
|
|||||||
Linux Accounts <create-ldap-linux-accounts>`.
|
Linux Accounts <create-ldap-linux-accounts>`.
|
||||||
|
|
||||||
User accounts created using :command:`ldapusersetup` have access to the
|
User accounts created using :command:`ldapusersetup` have access to the
|
||||||
Keystone CLI as part of the shell. To list the available commands, type
|
StarlingX |CLIs| \(system, fm, sw-patch, dcmanager, etc.\) and the platform
|
||||||
**?** at the command line:
|
'OpenStack' CLI as part of the shell.
|
||||||
|
|
||||||
.. code-block:: none
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
user1@controller-0:~$ ?
|
.. _establish-keystone-credentials-from-a-linux-account-ul-qyv-fzm-ynb:
|
||||||
|
|
||||||
awk echo history ls pwd source cat clear
|
- You must have a platform Keystone user account. For more information about
|
||||||
env grep keystone lsudo rm system cd cp
|
creating Keystone users, managing keystone projects, users and roles, see
|
||||||
exit ll man openstack scp vim cut export
|
`https://docs.openstack.org/keystone/pike/admin/cli-manage-projects-users-and-roles.html
|
||||||
help lpath env passwd sftp kubectl helm
|
<https://docs.openstack.org/keystone/pike/admin/cli-manage-projects-users-and-roles.html>`__.
|
||||||
|
|
||||||
When a user logs in to an account of this type, they are prompted to store
|
- It is recommended to use the same username for both your local |LDAP| user
|
||||||
Keystone credentials for the duration of the session:
|
and your Keystone user.
|
||||||
|
|
||||||
.. code-block:: none
|
.. rubric:: |context|
|
||||||
|
|
||||||
Pre-store Keystone user credentials for this session? (y/N):y
|
You can establish Keystone credentials, in order to use the StarlingX and
|
||||||
|
Platform OpenStack |CLIs|, using one of the following methods:
|
||||||
|
|
||||||
This invokes a script to obtain the credentials. The user can invoke the
|
.. rubric:: |proc|
|
||||||
same script at any time during the session as follows:
|
|
||||||
|
|
||||||
.. code-block:: none
|
.. _estabilish-keystone-credentials-from-a-linux-account-steps-hjs-dwm-ynb:
|
||||||
|
|
||||||
user1@controller-0:~$ source /home/sysadmin/lshell_env_setup
|
#. \(Method 1\) When you have logged into the Horizon Web interface with your
|
||||||
|
Keystone user credentials, download an OpenStack RC file \(openrc.sh\), and
|
||||||
|
use it to source the required environment within your local LDAP user shell
|
||||||
|
. For more information on downloading your OpenStack RC file from Horizon,
|
||||||
|
see, `http://docs.openstack.org <http://docs.openstack.org/>`__.
|
||||||
|
|
||||||
Any Keystone credentials created by the script persist for the duration of
|
#. \(Method 2\) Add the required environment variables manually into a
|
||||||
the session. This includes credentials added by previous invocations of the
|
wrcprc.sh file and use this to source the required environment within your
|
||||||
script in the same session.
|
local |LDAP| user shell.
|
||||||
|
|
||||||
|
|
||||||
.. _establish-keystone-credentials-from-a-linux-account-section-N10079-N10020-N10001:
|
|
||||||
|
|
||||||
-------------------------------
|
|
||||||
The Keystone Credentials Script
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
The Keystone credentials script offers the LDAP user name as the default
|
|
||||||
Keystone user name:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Enter Keystone username [user1]:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Enter Keystone user domain name:
|
|
||||||
|
|
||||||
It requires the name of the tenant for which the user requires access:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Enter Project name:tenant1
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
The Keystone user must be a member of a Keystone tenant. This is
|
For security and reliability, add all the variables.
|
||||||
configured using Keystone.
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Enter Project domain name:
|
|
||||||
|
|
||||||
It also requires the Keystone user password:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Enter Keystone password:
|
|
||||||
|
|
||||||
When the script is run during login, it sets the default **Keystone Region
|
|
||||||
Name** and **Keystone Authentication URL**.
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
Selecting default Keystone Region Name: RegionOne
|
|
||||||
Selecting default Keystone Authentication URL: http://192.168.204.2:5000/v2.0/
|
|
||||||
To re-configure your environment run "source ~/lshell_env_setup" in your shell
|
|
||||||
|
|
||||||
Keystone credentials preloaded!
|
|
||||||
|
|
||||||
If the script is run from the shell after login, it provides an option to
|
|
||||||
change the **Keystone Region Name** and **Keystone Authentication URL**.
|
|
||||||
|
|
||||||
|
|
||||||
.. _establishing-keystone-credentials-from-a-linux-account-section-N100B5-N10020-N10001:
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
|
||||||
Alternative Methods for Establishing Keystone Credentials
|
|
||||||
---------------------------------------------------------
|
|
||||||
|
|
||||||
You can also establish Keystone credentials using the following methods:
|
|
||||||
|
|
||||||
|
|
||||||
.. _establish-keystone-credentials-from-a-linux-account-ul-scj-rch-t5:
|
|
||||||
|
|
||||||
- Download an OpenStack RC file \(openrc.sh\) from the Horizon Web
|
|
||||||
interface, and use it to source the required environment. For more
|
|
||||||
information, refer to `http://docs.openstack.org
|
|
||||||
<http://docs.openstack.org>`__.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Only users with bash shell can source the required environment. This
|
|
||||||
does not apply to users with limited shell.
|
|
||||||
|
|
||||||
- Add the required environment variables manually:
|
|
||||||
|
|
||||||
**OS\_USERNAME**
|
**OS\_USERNAME**
|
||||||
the Keystone user name
|
the Keystone user name
|
||||||
@@ -149,20 +83,4 @@ You can also establish Keystone credentials using the following methods:
|
|||||||
the interface
|
the interface
|
||||||
|
|
||||||
**OS\_REGION\_NAME**
|
**OS\_REGION\_NAME**
|
||||||
the Keystone Region Name
|
the Keystone Region Name
|
||||||
|
|
||||||
For security and reliability, add all of the variables.
|
|
||||||
|
|
||||||
- Provide credentials as command-line options.
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
user1@controller-0:~$ system --os-username admin --os-password seeCaution host-list
|
|
||||||
|
|
||||||
|
|
||||||
.. caution::
|
|
||||||
|org| does not recommend using the command-line option to provide
|
|
||||||
Keystone credentials. It creates a security risk, because the
|
|
||||||
supplied credentials are visible in the command-line history.
|
|
||||||
|
|
||||||
|
|
@@ -12,38 +12,19 @@ external |prod| service endpoints.
|
|||||||
These include:
|
These include:
|
||||||
|
|
||||||
|
|
||||||
..
|
.. _https-access-overview-ul-eyn-5ln-gjb:
|
||||||
_https-access-overview-ul-eyn-5ln-gjb:
|
|
||||||
|
|
||||||
..
|
- |prod| REST API applications and the |prod| web administration server
|
||||||
- |prod| REST API applications and the |prod| web administration
|
|
||||||
server
|
|
||||||
|
|
||||||
..
|
- Kubernetes API
|
||||||
- Kubernetes API
|
|
||||||
|
|
||||||
..
|
- Local Docker registry
|
||||||
- Local Docker registry
|
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
:local:
|
:local:
|
||||||
:depth: 1
|
:depth: 1
|
||||||
|
|
||||||
.. note::
|
You can also add a trusted Certificate Authority \(CA\) for the |prod| system.
|
||||||
Only self-signed or Root |CA|-signed certificates are supported for the
|
|
||||||
above |prod| service endpoints. See `https://en.wikipedia.org/wiki/X.509
|
|
||||||
<https://en.wikipedia.org/wiki/X.509>`__ for an overview of root,
|
|
||||||
intermediate, and end-entity certificates.
|
|
||||||
|
|
||||||
You can also add a trusted |CA| for the |prod| system.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
The default HTTPS X.509 certificates that are used by |prod-long| for
|
|
||||||
authentication are not signed by a known authority. For increased
|
|
||||||
security, obtain, install, and use certificates that have been signed by
|
|
||||||
a Root certificate authority. Refer to the documentation for the external
|
|
||||||
Root |CA| that you are using, on how to create public certificate and
|
|
||||||
private key pairs, signed by a Root |CA|, for HTTPS.
|
|
||||||
|
|
||||||
|
|
||||||
.. _https-access-overview-section-N10048-N10024-N10001:
|
.. _https-access-overview-section-N10048-N10024-N10001:
|
||||||
@@ -63,11 +44,12 @@ REST and Web Server endpoints. In order to connect, remote clients must be
|
|||||||
configured to accept the self-signed certificate without verifying it. This
|
configured to accept the self-signed certificate without verifying it. This
|
||||||
is called insecure mode.
|
is called insecure mode.
|
||||||
|
|
||||||
For secure-mode connections, a Root |CA|-signed certificate and key are
|
For secure-mode connections, an intermediate or Root |CA|-signed certificate
|
||||||
required. The use of a Root |CA|-signed certificate is strongly recommended.
|
and key are required. The use of an intermediate or Root |CA|-signed
|
||||||
Refer to the documentation for the external Root |CA| that you are using, on
|
certificate is strongly recommended. Refer to the documentation for the
|
||||||
how to create public certificate and private key pairs, signed by a Root |CA|,
|
external intermediate or Root |CA| that you are using, on how to create public
|
||||||
for HTTPS.
|
certificate and private key pairs, signed by an intermediate or Root |CA|, for
|
||||||
|
HTTPS.
|
||||||
|
|
||||||
You can update the certificate and key used by |prod| for the
|
You can update the certificate and key used by |prod| for the
|
||||||
REST and Web Server endpoints at any time after installation.
|
REST and Web Server endpoints at any time after installation.
|
||||||
@@ -84,15 +66,16 @@ hosts.
|
|||||||
Kubernetes
|
Kubernetes
|
||||||
----------
|
----------
|
||||||
|
|
||||||
For the Kubernetes API Server, HTTPS is always enabled. Similarly, by
|
For the Kubernetes API Server, HTTPS is always enabled. You must use a Root CA
|
||||||
default, a self-signed certificate and key is generated and installed for
|
certificate; intermediate CA certificates are not supported by upstream
|
||||||
the Kubernetes Root |CA| certificate and key. This Kubernetes Root |CA| is
|
Kubernetes. By default, a self-signed certificate and key is generated and
|
||||||
used to create and sign various certificates used within Kubernetes,
|
installed for the Kubernetes Root |CA| certificate and key. This Kubernetes
|
||||||
including the certificate used by the kube-apiserver API endpoint.
|
Root |CA| is used to create and sign various certificates used within
|
||||||
|
Kubernetes, including the certificate used by the kube-apiserver API endpoint.
|
||||||
|
|
||||||
It is recommended that you update the Kubernetes Root |CA| and with a
|
It is recommended that you update the Kubernetes Root |CA| and with a custom
|
||||||
custom Root |CA| certificate and key, generated by yourself, and trusted by
|
Root |CA| certificate and key, generated by yourself, and trusted by your
|
||||||
external servers connecting to |prod|'s Kubernetes API endpoint. |prod|'s
|
external servers connecting to |prod|'s Kubernetes API endpoint. The |prod|'s
|
||||||
Kubernetes Root |CA| is configured as part of the bootstrap during
|
Kubernetes Root |CA| is configured as part of the bootstrap during
|
||||||
installation.
|
installation.
|
||||||
|
|
||||||
@@ -103,13 +86,13 @@ installation.
|
|||||||
Local Docker Registry
|
Local Docker Registry
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
For the Local Docker Registry, HTTPS is always enabled. Similarly, by
|
For the Local Docker Registry, HTTPS is always enabled. Similarly, by default,
|
||||||
default, a self-signed certificate and key is generated and installed for
|
a self-signed certificate and key is generated and installed for this endpoint.
|
||||||
this endpoint. However, it is recommended that you update the certificate
|
However, it is recommended that you update the certificate used after
|
||||||
used after installation with a Root |CA|-signed certificate and key. Refer to
|
installation with an intermediate or Root |CA|-signed certificate and key.
|
||||||
the documentation for the external Root |CA| that you are using, on how to
|
Refer to the documentation for the external intermediate or Root |CA| that you
|
||||||
create public certificate and private key pairs, signed by a Root |CA|, for
|
are using, on how to create public certificate and private key pairs, signed by
|
||||||
HTTPS.
|
a Root |CA|, for HTTPS.
|
||||||
|
|
||||||
|
|
||||||
.. _https-access-overview-section-N10086-N10024-N10001:
|
.. _https-access-overview-section-N10086-N10024-N10001:
|
||||||
|
@@ -9,7 +9,11 @@ System Accounts
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
types-of-system-accounts
|
||||||
overview-of-system-accounts
|
overview-of-system-accounts
|
||||||
|
kube-service-account
|
||||||
|
keystone-accounts
|
||||||
|
remote-windows-active-directory-accounts
|
||||||
|
|
||||||
Linux User Accounts
|
Linux User Accounts
|
||||||
*******************
|
*******************
|
||||||
@@ -23,6 +27,9 @@ Linux User Accounts
|
|||||||
remote-access-for-linux-accounts
|
remote-access-for-linux-accounts
|
||||||
password-recovery-for-linux-user-accounts
|
password-recovery-for-linux-user-accounts
|
||||||
establish-keystone-credentials-from-a-linux-account
|
establish-keystone-credentials-from-a-linux-account
|
||||||
|
estabilish-credentials-for-linux-user-accounts
|
||||||
|
starlingx-openstack-kubernetes-from-stsadmin-account-login
|
||||||
|
kubernetes-cli-from-local-ldap-linux-account-login
|
||||||
|
|
||||||
Kubernetes Service Accounts
|
Kubernetes Service Accounts
|
||||||
***************************
|
***************************
|
||||||
@@ -68,6 +75,7 @@ Access the System
|
|||||||
install-the-kubernetes-dashboard
|
install-the-kubernetes-dashboard
|
||||||
security-rest-api-access
|
security-rest-api-access
|
||||||
connect-to-container-registries-through-a-firewall-or-proxy
|
connect-to-container-registries-through-a-firewall-or-proxy
|
||||||
|
using-container-backed-remote-clis-and-clients
|
||||||
|
|
||||||
***************************
|
***************************
|
||||||
Manage Non-Admin Type Users
|
Manage Non-Admin Type Users
|
||||||
|
@@ -20,7 +20,7 @@ You can install Portieris on |prod| from the command line.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-upload /usr/local/share/applications/helm/portieris-<version>.tgz
|
~(keystone_admin)]$ system application-upload /usr/local/share/applications/helm/portieris-<version>.tgz
|
||||||
|
|
||||||
#. Set caCert helm overrides if applicable.
|
#. Set caCert helm overrides if applicable.
|
||||||
|
|
||||||
@@ -36,19 +36,19 @@ You can install Portieris on |prod| from the command line.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ echo 'caCert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURYVENDQWtXZ0F3SUJBZ0lKQUpjVHBXcTk4SWNSTUEwR0NTcUdTSWIzRFFFQkN3VUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVGd3T0RFMk1qQXlPREl3V2hjTk1qRXdOakExTWpBeU9ESXdXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkRYwWlRFaE1COEdBMVVFQ2d3WVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXV4YXJMaVdwMDVnbG5kTWRsL1o3QmhySDFPTFNTVTcwcm9mV3duTmNQS3hsOURmVVNWVTZMTDJnClppUTFVZnA4TzFlVTJ4NitPYUxxekRuc2xpWjIxdzNXaHRiOGp2NmRFakdPdTg3eGlWWDBuSDBmSjF3cHFBR0UKRkVXekxVR2dJM29aUDBzME1Sbm1xVDA4VWZ6S0hCaFgvekNvNHMyVm9NcWxRNyt0Qjc2dTA3V3NKYQ0RFlQVwprR2tFVmRMSk4rWWcwK0pLaisvVU9kbE5WNDB2OE1ocEhkbWhzY1QyakI3WSszT0QzeUNxZ1RjRzVDSDQvK3J6CmR4Qjk3dEpMM2NWSkRQWTVNQi9XNFdId2NKRkwzN1p1M0dVdmhmVGF3NVE0dS85cTFkczgrVGFYajdLbWUxSzcKQnYyMTZ5dTZiN3M1ckpHU2lEZ0p1TWFNcm5YajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVyQndhbTAreApydUMvY3Vpbkp1RlM4Y1ZibjBBd0h3WURWUjBqQkJnd0ZvQVVyQndhbTAreHJ1Qy9jdWluSnVGUzhjVmJuMEF3CkRBWURWUjBUQFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZzJ5aEFNazVJUlRvOWZLc1IvMXkKMXJ5NzdSWU5KN1R2dTB0clltRElBMVRaanFtanlncFFiSmlGb0FPa255eHYveURLU0x6TXFNU2JIb0I1K1BhSQpnTERub0F6SnYxbzg3OEpkVllURjIyS2RUTU5wNWtITXVGMnpSTFFxc2lvenJQSUpWMDlVb2VHeHpPQ1pkYzZBCnpUblpCSy9DVTlRcnhVdzhIeDV6SEFVcHdVcGxONUE4MVROUmlMYVFVTXB5dzQ4Y08wNFcyOWY1aFA2aGMwVDMKSDJpU212OWY2K3Q5TjBvTTFuWVh1blgwWNJZll1aERmQy83c3N3eDhWcW5uTlNMN0lkQkhodGxhRHJGRXBzdQpGZzZOODBCbGlDclJiN2FPcUk4TWNjdzlCZW9UUk9uVGxVUU5RQkEzTjAyajJvTlhYL2loVHQvZkhNYlZGUFRQCi9nPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=' > caCert.yaml
|
~(keystone_admin)]$ echo 'caCert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURYVENDQWtXZ0F3SUJBZ0lKQUpjVHBXcTk4SWNSTUEwR0NTcUdTSWIzRFFFQkN3VUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVGd3T0RFMk1qQXlPREl3V2hjTk1qRXdOakExTWpBeU9ESXdXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkRYwWlRFaE1COEdBMVVFQ2d3WVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXV4YXJMaVdwMDVnbG5kTWRsL1o3QmhySDFPTFNTVTcwcm9mV3duTmNQS3hsOURmVVNWVTZMTDJnClppUTFVZnA4TzFlVTJ4NitPYUxxekRuc2xpWjIxdzNXaHRiOGp2NmRFakdPdTg3eGlWWDBuSDBmSjF3cHFBR0UKRkVXekxVR2dJM29aUDBzME1Sbm1xVDA4VWZ6S0hCaFgvekNvNHMyVm9NcWxRNyt0Qjc2dTA3V3NKYQ0RFlQVwprR2tFVmRMSk4rWWcwK0pLaisvVU9kbE5WNDB2OE1ocEhkbWhzY1QyakI3WSszT0QzeUNxZ1RjRzVDSDQvK3J6CmR4Qjk3dEpMM2NWSkRQWTVNQi9XNFdId2NKRkwzN1p1M0dVdmhmVGF3NVE0dS85cTFkczgrVGFYajdLbWUxSzcKQnYyMTZ5dTZiN3M1ckpHU2lEZ0p1TWFNcm5YajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVyQndhbTAreApydUMvY3Vpbkp1RlM4Y1ZibjBBd0h3WURWUjBqQkJnd0ZvQVVyQndhbTAreHJ1Qy9jdWluSnVGUzhjVmJuMEF3CkRBWURWUjBUQFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZzJ5aEFNazVJUlRvOWZLc1IvMXkKMXJ5NzdSWU5KN1R2dTB0clltRElBMVRaanFtanlncFFiSmlGb0FPa255eHYveURLU0x6TXFNU2JIb0I1K1BhSQpnTERub0F6SnYxbzg3OEpkVllURjIyS2RUTU5wNWtITXVGMnpSTFFxc2lvenJQSUpWMDlVb2VHeHpPQ1pkYzZBCnpUblpCSy9DVTlRcnhVdzhIeDV6SEFVcHdVcGxONUE4MVROUmlMYVFVTXB5dzQ4Y08wNFcyOWY1aFA2aGMwVDMKSDJpU212OWY2K3Q5TjBvTTFuWVh1blgwWNJZll1aERmQy83c3N3eDhWcW5uTlNMN0lkQkhodGxhRHJGRXBzdQpGZzZOODBCbGlDclJiN2FPcUk4TWNjdzlCZW9UUk9uVGxVUU5RQkEzTjAyajJvTlhYL2loVHQvZkhNYlZGUFRQCi9nPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=' > caCert.yaml
|
||||||
|
|
||||||
#. Apply the override file.
|
#. Apply the override file.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system helm-override-update portieris portieris-certs portieris --values caCert.yaml
|
~(keystone_admin)]$ system helm-override-update portieris portieris-certs portieris --values caCert.yaml
|
||||||
|
|
||||||
|
|
||||||
#. Apply the application.
|
#. Apply the application.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-apply portieris
|
~(keystone_admin)]$ system application-apply portieris
|
||||||
|
|
||||||
|
|
||||||
|
@@ -29,7 +29,7 @@ Dashboard.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl create namespace kubernetes-dashboard
|
~(keystone_admin)]$ kubectl create namespace kubernetes-dashboard
|
||||||
|
|
||||||
#. Create a certificate for use by the Kubernetes Dashboard.
|
#. Create a certificate for use by the Kubernetes Dashboard.
|
||||||
|
|
||||||
@@ -43,20 +43,20 @@ Dashboard.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ cd /home/sysadmin
|
~(keystone_admin)]$ cd /home/sysadmin
|
||||||
~(keystone_admin)$ mkdir -p /home/sysadmin/kube/dashboard/certs
|
~(keystone_admin)]$ mkdir -p /home/sysadmin/kube/dashboard/certs
|
||||||
|
|
||||||
|
|
||||||
#. Create the certificate.
|
#. Create the certificate.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /home/sysadmin/kube/dashboard/certs/dashboard.key -out /home/sysadmin/kube/dashboard/certs/dashboard.crt -subj "/CN=<FQDN>"
|
~(keystone_admin)]$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /home/sysadmin/kube/dashboard/certs/dashboard.key -out /home/sysadmin/kube/dashboard/certs/dashboard.crt -subj "/CN=<FQDN>"
|
||||||
|
|
||||||
where:
|
where:
|
||||||
**<FQDN>**
|
**<FQDN>**
|
||||||
|
|
||||||
The fully qualified domain name for the |prod| cluster's OAM floating IP.
|
The fully qualified domain name for the |prod| cluster's |OAM| floating IP.
|
||||||
|
|
||||||
#. Create a kubernetes secret for holding the certificate and private key.
|
#. Create a kubernetes secret for holding the certificate and private key.
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ Dashboard.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
|
~(keystone_admin)]$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
|
||||||
|
|
||||||
#. Edit the file.
|
#. Edit the file.
|
||||||
|
|
||||||
@@ -98,18 +98,18 @@ Dashboard.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl apply -f recommended.yaml
|
~(keystone_admin)]$ kubectl apply -f recommended.yaml
|
||||||
|
|
||||||
#. Patch the kubernetes dashboard service to type=NodePort and port=30000.
|
#. Patch the kubernetes dashboard service to type=NodePort and port=30000.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl patch service kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort","ports":[{"port":443, "nodePort":30000}]}}'
|
~(keystone_admin)]$ kubectl patch service kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort","ports":[{"port":443, "nodePort":30000}]}}'
|
||||||
|
|
||||||
#. Test the Kubernetes Dashboard deployment.
|
#. Test the Kubernetes Dashboard deployment.
|
||||||
|
|
||||||
The Kubernetes Dashboard is listening at port 30000 on the machine
|
The Kubernetes Dashboard is listening at port 30000 on the machine
|
||||||
defined above for |prod| cluster's OAM floating IP.
|
defined above for |prod| cluster's |OAM| floating IP.
|
||||||
|
|
||||||
|
|
||||||
#. Access the dashboard at https://<fqdn>:30000
|
#. Access the dashboard at https://<fqdn>:30000
|
||||||
|
@@ -12,16 +12,18 @@ administration server.
|
|||||||
|
|
||||||
.. rubric:: |prereq|
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
Obtain a Root |CA|-signed certificate and key from a trusted Root |CA|.
|
Obtain an intermediate or Root |CA|-signed certificate and key from a trusted
|
||||||
Refer to the documentation for the external Root |CA| that you are using,
|
intermediate or Root |CA|. Refer to the documentation for the external
|
||||||
on how to create public certificate and private key pairs, signed by a Root
|
Intermediate or Root |CA| that you are using, on how to create public
|
||||||
|CA|, for HTTPS.
|
certificate and private key pairs, signed by intermediate or a Root |CA|, for
|
||||||
|
HTTPS.
|
||||||
|
|
||||||
.. xbooklink
|
.. xbooklink
|
||||||
|
|
||||||
For lab purposes, see :ref:`Locally Creating Certificates
|
For lab purposes, see :ref:`Locally Creating Certificates
|
||||||
<creating-certificates-locally-using-openssl>` for how to create a test
|
<creating-certificates-locally-using-openssl>` for how to create a test
|
||||||
Root |CA| certificate and key, and use it to sign test certificates.
|
intermediate or Root |CA| certificate and key, and use it to sign test
|
||||||
|
certificates.
|
||||||
|
|
||||||
Put the |PEM| encoded versions of the certificate and key in a single file,
|
Put the |PEM| encoded versions of the certificate and key in a single file,
|
||||||
and copy the file to the controller host.
|
and copy the file to the controller host.
|
||||||
@@ -34,13 +36,13 @@ and copy the file to the controller host.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install <pathTocertificateAndKey>
|
~(keystone_admin)]$ system certificate-install -m ssl <pathTocertificateAndKey>
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
**<pathTocertificateAndKey>**
|
**<pathTocertificateAndKey>**
|
||||||
|
|
||||||
is the path to the file containing both the Root |CA|-signed certificate
|
is the path to the file containing both the intermediate or Root
|
||||||
and private key to install.
|
|CA|-signed certificate and private key to install.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ Isolate StarlingX's Internal Cloud Management Network
|
|||||||
only the hosts on the cluster.
|
only the hosts on the cluster.
|
||||||
|
|
||||||
For information on internal networks, see the :ref:`StarlingX Planning Guide
|
For information on internal networks, see the :ref:`StarlingX Planning Guide
|
||||||
<overview-of-starlingx-planning>`. The network should be configured as a
|
<overview-of-starlingx-planning>` should be configured as a private network
|
||||||
private network visible to only the hosts on the cluster. Proper switch
|
visible to only the hosts on the cluster. Proper switch configuration is
|
||||||
configuration is required to achieve the isolation.
|
required to achieve the isolation.
|
||||||
|
|
||||||
|
14
doc/source/security/kubernetes/keystone-accounts.rst
Normal file
14
doc/source/security/kubernetes/keystone-accounts.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
.. xsx1607977134022
|
||||||
|
.. _keystone-accounts:
|
||||||
|
|
||||||
|
=================
|
||||||
|
Keystone Accounts
|
||||||
|
=================
|
||||||
|
|
||||||
|
|prod-long| uses Keystone for authentication and authorization of users of the
|
||||||
|
StarlingX REST APIs, the |CLI|, the Horizon Web interface and the Local Docker
|
||||||
|
Registry. |prod|'s Keystone uses the default local SQL Backend.
|
||||||
|
|
||||||
|
See :ref:`About Keystone Accounts <about-keystone-accounts>` for more details.
|
||||||
|
|
14
doc/source/security/kubernetes/kube-service-account.rst
Normal file
14
doc/source/security/kubernetes/kube-service-account.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
.. lpl1607977081524
|
||||||
|
.. _kube-service-account:
|
||||||
|
|
||||||
|
===========================
|
||||||
|
Kubernetes Service Accounts
|
||||||
|
===========================
|
||||||
|
|
||||||
|
|prod| uses Kubernetes service accounts and |RBAC| policies for authentication
|
||||||
|
and authorization of users of the Kubernetes API, |CLI|, and Dashboard.
|
||||||
|
|
||||||
|
See :ref:`Kubernetes Service Accounts <kubernetes-service-accounts>` for more
|
||||||
|
details.
|
||||||
|
|
@@ -0,0 +1,62 @@
|
|||||||
|
|
||||||
|
.. zmz1607701719511
|
||||||
|
.. _kubernetes-cli-from-local-ldap-linux-account-login:
|
||||||
|
|
||||||
|
========================================================
|
||||||
|
For Kubernetes CLI from a Local LDAP Linux Account Login
|
||||||
|
========================================================
|
||||||
|
|
||||||
|
You can establish credentials for executing Kubernetes |CLIs| \(kubectl and
|
||||||
|
helm\) for a Local |LDAP| user, if required; this is not setup by default.
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
For more information about :command:`ldapusersetup`, see :ref:`Creating LDAP
|
||||||
|
Linux Accounts <create-ldap-linux-accounts>`.
|
||||||
|
|
||||||
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
|
.. _kubernetes-cli-from-local-ldap-linux-account-login-ul-afg-rcn-ynb:
|
||||||
|
|
||||||
|
- You must have a Kubernetes Service Account.
|
||||||
|
|
||||||
|
- See :ref:`Creating an Admin Type Service Account
|
||||||
|
<create-an-admin-type-service-account>` for details on how to create an admin
|
||||||
|
level service account. For more clarifications, ask your 'sysadmin'.
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
It is recommended to use the same username for both your Local |LDAP| user and
|
||||||
|
your Kubernetes Service Account.
|
||||||
|
|
||||||
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
#. Add your Local |LDAP| user account to the 'root' group in order to get
|
||||||
|
access to execute :command:`kubectl`.
|
||||||
|
|
||||||
|
If you have sudo permissions, run the following command first, and then
|
||||||
|
re-ssh to your local |LDAP| user account, otherwise the 'sysadmin' will have
|
||||||
|
to execute this step.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
$sudo usermod -a -G root <ldapusername>
|
||||||
|
|
||||||
|
#. Configure :command:`kubectl` access.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Your 'sysadmin' should have given you a TOKEN while setting up your
|
||||||
|
Kubernetes Service Account.
|
||||||
|
|
||||||
|
Execute the following commands:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
$ kubectl config set-cluster mycluster --server=https://192.168.206.1:6443 --insecure-skip-tls-verify
|
||||||
|
$ kubectl config set-credentials joe-admin@mycluster --token=$TOKEN
|
||||||
|
$ kubectl config set-context joe-admin@mycluster --cluster=mycluster --user joe-admin@mycluster
|
||||||
|
$ kubectl config use-context joe-admin@mycluster
|
||||||
|
|
||||||
|
You now have admin access to |prod| Kubernetes cluster.
|
||||||
|
|
||||||
|
|
@@ -20,6 +20,18 @@ servers connecting to the |prod|'s Kubernetes API endpoint.
|
|||||||
<creating-certificates-locally-using-openssl>` for how to create a
|
<creating-certificates-locally-using-openssl>` for how to create a
|
||||||
private Root |CA| certificate and key.
|
private Root |CA| certificate and key.
|
||||||
|
|
||||||
|
.. caution::
|
||||||
|
The default duration for the generated Kubernetes Root CA certificate is 10
|
||||||
|
years. Replacing the Root |CA| certificate is a complex process, so the custom
|
||||||
|
certificate expiry should be set for a long period, if possible. Wind River
|
||||||
|
recommends setting the Root |CA| certificate with an expiry of at least 5-10
|
||||||
|
years.
|
||||||
|
|
||||||
|
The administrator can also provide values to add to the Kubernetes API
|
||||||
|
server certificate **Subject Alternative Name** list using the
|
||||||
|
apiserver\_cert\_sans override parameter.
|
||||||
|
|
||||||
|
|
||||||
Use the bootstrap override values <k8s\_root\_ca\_cert> and
|
Use the bootstrap override values <k8s\_root\_ca\_cert> and
|
||||||
<k8s\_root\_ca\_key>, as part of the installation procedure to specify the
|
<k8s\_root\_ca\_key>, as part of the installation procedure to specify the
|
||||||
certificate and key for the Kubernetes root |CA|.
|
certificate and key for the Kubernetes root |CA|.
|
||||||
@@ -74,6 +86,8 @@ associated with the |OAM| floating IP address should be added.
|
|||||||
|
|
||||||
Make the K8S Root |CA| certificate available to any remote server wanting to
|
Make the K8S Root |CA| certificate available to any remote server wanting to
|
||||||
connect remotely to the |prod|'s Kubernetes API, e.g. through kubectl or helm.
|
connect remotely to the |prod|'s Kubernetes API, e.g. through kubectl or helm.
|
||||||
|
This Kubernetes Root CA certificate should be configured as a trusted |CA| on
|
||||||
|
the remote server.
|
||||||
|
|
||||||
See the step :ref:`2.b
|
See the step :ref:`2.b
|
||||||
<security-install-kubectl-and-helm-clients-directly-on-a-host>` in
|
<security-install-kubectl-and-helm-clients-directly-on-a-host>` in
|
||||||
|
@@ -12,22 +12,19 @@ cluster using standard Linux commands.
|
|||||||
|
|
||||||
.. _local-and-ldap-linux-user-accounts-ul-zrv-zwf-mmb:
|
.. _local-and-ldap-linux-user-accounts-ul-zrv-zwf-mmb:
|
||||||
|
|
||||||
Local Linux user accounts should NOT be configured, only use local LDAP
|
- Local Linux user accounts should NOT be configured, only use local |LDAP|
|
||||||
accounts for internal system purposes that would usually not be created by
|
accounts for internal system purposes that would usually not be created by
|
||||||
an end-user.
|
an end-user.
|
||||||
|
|
||||||
Password changes are not enforced automatically on the first login, and
|
- Password changes are not enforced automatically on the first login, and
|
||||||
they are not propagated by the system \(only for 'sysadmin'\).
|
they are not propagated by the system \(only for 'sysadmin'\).
|
||||||
|
|
||||||
.. note::
|
- **If the administrator wants to provision additional access to the system, it is better to configure local LDAP Linux accounts.**
|
||||||
If the administrator wants to provision additional access to the
|
|
||||||
system, it is better to configure local LDAP Linux accounts.
|
|
||||||
|
|
||||||
|
- |LDAP| accounts are centrally managed; changes made on any host are
|
||||||
- LDAP accounts are centrally managed; changes made on any host are
|
|
||||||
propagated automatically to all hosts on the cluster.
|
propagated automatically to all hosts on the cluster.
|
||||||
|
|
||||||
- LDAP user accounts behave as any local user account. They can be added
|
- |LDAP| user accounts behave as any local user account. They can be added
|
||||||
to the sudoers list and can acquire OpenStack administration credentials.
|
to the sudoers list and can acquire OpenStack administration credentials.
|
||||||
|
|
||||||
- The initial password must be changed immediately upon the first login.
|
- The initial password must be changed immediately upon the first login.
|
||||||
@@ -42,11 +39,10 @@ they are not propagated by the system \(only for 'sysadmin'\).
|
|||||||
of the target host.
|
of the target host.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
For security reasons, it is recommended that ONLY admin level users
|
For security reasons, it is recommended that ONLY admin level users be
|
||||||
be allowed to SSH to the nodes of |prod|. Non-admin level users
|
allowed to |SSH| to the nodes of the |prod|. Non-admin level users should
|
||||||
should strictly use remote CLIs or remote web GUIs.
|
strictly use remote |CLIs| or remote web GUIs.
|
||||||
|
|
||||||
Operational complexity:
|
Operational complexity:
|
||||||
|
|
||||||
@@ -54,14 +50,14 @@ Operational complexity:
|
|||||||
|
|
||||||
- Passwords aging is automatically configured.
|
- Passwords aging is automatically configured.
|
||||||
|
|
||||||
- LDAP user accounts \(operator, admin\) are available by default on
|
- |LDAP| user accounts \(operator, admin\) are available by default on
|
||||||
newly deployed hosts. For increased security, the admin and operator
|
newly deployed hosts. For increased security, the admin and operator
|
||||||
accounts must be used from the console ports of the hosts; no SSH access is
|
accounts must be used from the console ports of the hosts; no |SSH| access
|
||||||
allowed.
|
is allowed.
|
||||||
|
|
||||||
- |prod| includes a script for creating LDAP Linux accounts with built-in
|
- |prod| includes a script for creating |LDAP| Linux accounts with built-in
|
||||||
Keystone user support. It provides an interactive method for setting up
|
Keystone user support. It provides an interactive method for setting up
|
||||||
LDAP Linux user accounts with access to OpenStack commands. You can assign
|
|LDAP| Linux user accounts with access to OpenStack commands. You can
|
||||||
a limited shell or a bash shell.
|
assign a limited shell or a bash shell.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -19,9 +19,10 @@ accounts \(in addition to sysadmin\) that can SSH to the nodes of the |prod|.
|
|||||||
allowed to SSH to the nodes of the |prod|. Non-admin level users should
|
allowed to SSH to the nodes of the |prod|. Non-admin level users should
|
||||||
strictly use remote CLIs or remote web GUIs.
|
strictly use remote CLIs or remote web GUIs.
|
||||||
|
|
||||||
Apart from being centrally managed, LDAP user accounts behave as any local
|
Apart from being centrally managed, LDAP user accounts behave as any local user
|
||||||
user account. They can be added to the sudoers list, and can acquire
|
account. They can be added to the sudoers list, and can acquire Keystone
|
||||||
Keystone administration credentials when executing on the active controller.
|
administration credentials, Kubernetes kubectl, and helm administrative
|
||||||
|
commands as the Kubernetes admin user, when executing on the active controller.
|
||||||
|
|
||||||
LDAP user accounts share the following set of attributes:
|
LDAP user accounts share the following set of attributes:
|
||||||
|
|
||||||
@@ -50,6 +51,12 @@ LDAP user accounts share the following set of attributes:
|
|||||||
and are local to that host.
|
and are local to that host.
|
||||||
|
|
||||||
|
|
||||||
|
.. _local-ldap-linux-user-accounts-section-kts-bvh-ynb:
|
||||||
|
|
||||||
|
--------------------------
|
||||||
|
Default LDAP User Accounts
|
||||||
|
--------------------------
|
||||||
|
|
||||||
The following LDAP user accounts are available by default on newly deployed
|
The following LDAP user accounts are available by default on newly deployed
|
||||||
hosts, regardless of their personality:
|
hosts, regardless of their personality:
|
||||||
|
|
||||||
@@ -57,9 +64,9 @@ hosts, regardless of their personality:
|
|||||||
A cloud administrative account, comparable to the default **admin**
|
A cloud administrative account, comparable to the default **admin**
|
||||||
account used in the web management interface.
|
account used in the web management interface.
|
||||||
|
|
||||||
This user account operates on a restricted Linux shell, with very
|
This user account has access to all native Linux commands not requiring
|
||||||
limited access to native Linux commands. However, the shell is
|
root or sudo privileges, and it's shell is preconfigured to have
|
||||||
preconfigured to have administrative access to StarlingX commands.
|
administrative access to StarlingX commands.
|
||||||
|
|
||||||
**admin**
|
**admin**
|
||||||
A host administrative account. It has access to all native Linux
|
A host administrative account. It has access to all native Linux
|
||||||
@@ -80,4 +87,6 @@ from the console ports of the hosts; no SSH access is allowed.
|
|||||||
**operator** account enables access to the cloud deployment only, without
|
**operator** account enables access to the cloud deployment only, without
|
||||||
giving unabated sudo access to the entire system.
|
giving unabated sudo access to the entire system.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
:ref:`Creating LDAP Linux Accounts <create-ldap-linux-accounts>`
|
@@ -6,11 +6,11 @@
|
|||||||
Local Linux Account for 'sysadmin'
|
Local Linux Account for 'sysadmin'
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
This is a local, per-host, sudo-enabled account created automatically when
|
This is a local, per-host, sudo-enabled account created automatically when a
|
||||||
a new host is provisioned.
|
new host is provisioned.
|
||||||
|
|
||||||
This Linux user account is used by the system administrator as it has
|
This Linux user account is used by the system administrator as it has extended
|
||||||
extended privileges.
|
privileges.
|
||||||
|
|
||||||
|
|
||||||
.. _local-linux-account-for-sysadmin-ul-zgk-1wf-mmb:
|
.. _local-linux-account-for-sysadmin-ul-zgk-1wf-mmb:
|
||||||
@@ -21,8 +21,7 @@ extended privileges.
|
|||||||
- After five consecutive unsuccessful login attempts, further attempts
|
- After five consecutive unsuccessful login attempts, further attempts
|
||||||
are blocked for about five minutes.
|
are blocked for about five minutes.
|
||||||
|
|
||||||
Operational complexity: None.
|
Operational complexity: None. The above security hardening features are set by
|
||||||
|
default \(see :ref:`System Account Password Rules
|
||||||
The above security hardening features are set by default \(see :ref:`System
|
<system-account-password-rules>` for password rules\).
|
||||||
Account Password Rules <system-account-password-rules>` for password rules\).
|
|
||||||
|
|
||||||
|
@@ -11,21 +11,30 @@ See
|
|||||||
<https://docs.openstack.org/keystone/pike/admin/cli-manage-projects-users-and-roles.html>`_
|
<https://docs.openstack.org/keystone/pike/admin/cli-manage-projects-users-and-roles.html>`_
|
||||||
_ for details on managing Keystone projects, users, and roles.
|
_ for details on managing Keystone projects, users, and roles.
|
||||||
|
|
||||||
.. note::
|
|
||||||
All Kubernetes accounts are subject to system password rules. For
|
All Kubernetes accounts are subject to system password rules. For complete
|
||||||
complete details on password rules, see :ref:`System Account Password
|
details on password rules, see :ref:`System Account Password Rules
|
||||||
Rules <starlingx-system-accounts-system-account-password-rules>`.
|
<starlingx-system-accounts-system-account-password-rules>`.
|
||||||
|
|
||||||
|
If you are using when changing the keystone 'admin' user password, you must:
|
||||||
|
|
||||||
.. _managing-keystone-accounts-ol-wyq-l4d-mmb:
|
.. _managing-keystone-accounts-ol-wyq-l4d-mmb:
|
||||||
|
|
||||||
If using the FIXME: REMOVE, when changing the Keystone 'admin' user
|
#. If the **deployment-config.yaml** file has been moved off-box for security
|
||||||
password, you must:
|
reasons, upload the file back to the system to be updated.
|
||||||
|
|
||||||
#. Update the password in the 'system-endpoint' secret in the FIXME:
|
.. warning::
|
||||||
REMOVE's deployment-config.yaml file, with the new Keystone 'admin'
|
The **deployment-config.yaml** file includes sensitive information
|
||||||
user password.
|
\(including system credentials and passwords\). For increased security,
|
||||||
|
it is recommended to store the **deployment-config.yaml** in a safe
|
||||||
|
location off-box. Upload the file to the system only when it is
|
||||||
|
required \(during initial configuration, and when reapplying an updated
|
||||||
|
configuration\).
|
||||||
|
|
||||||
Make this change to the OS\_PASSWORD value. It must be base64 encoded. For example:
|
#. Update the password in the 'system-endpoint' secret in the 's
|
||||||
|
deployment-config.yaml file, with the new keystone 'admin' user password.
|
||||||
|
Make this change to the OS\_PASSWORD value. It must be base64 encoded. For
|
||||||
|
example:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
@@ -37,4 +46,5 @@ password, you must:
|
|||||||
|
|
||||||
kubectl apply -f deployment-config.yaml
|
kubectl apply -f deployment-config.yaml
|
||||||
|
|
||||||
|
#. \(Optional\) For security reasons, copy the updated
|
||||||
|
**deployment-config.yaml** file off-box and delete it from the system.
|
||||||
|
@@ -64,21 +64,21 @@ refresh-token using the **oidc-auth-apps** |OIDC| client web interface.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ TOKEN=<ID_token_string>
|
~(keystone_admin)]$ TOKEN=<ID_token_string>
|
||||||
~(keystone_admin)$ kubectl config set-credentials testuser --token $TOKEN
|
~(keystone_admin)]$ kubectl config set-credentials testuser --token $TOKEN
|
||||||
|
|
||||||
#. Switch to the Kubernetes context for the user, by using the following
|
#. Switch to the Kubernetes context for the user, by using the following
|
||||||
command, for example:
|
command, for example:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl config use-context testuser@mywrcpcluster
|
~(keystone_admin)]$ kubectl config use-context testuser@mywrcpcluster
|
||||||
|
|
||||||
#. Run the following command to test that the authentication token
|
#. Run the following command to test that the authentication token
|
||||||
validates correctly:
|
validates correctly:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl get pods --all-namespaces
|
~(keystone_admin)]$ kubectl get pods --all-namespaces
|
||||||
|
|
||||||
|
|
||||||
|
@@ -59,13 +59,13 @@ credential for the user in the **kubectl** config file.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ oidc-auth -c <ip> -u <username>
|
~(keystone_admin)]$ oidc-auth -c <ip> -u <username>
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ oidc-auth -c <OAM_ip_address> -u testuser
|
~(keystone_admin)]$ oidc-auth -c <OAM_ip_address> -u testuser
|
||||||
Password:
|
Password:
|
||||||
Login succeeded.
|
Login succeeded.
|
||||||
Updating kubectl config ...
|
Updating kubectl config ...
|
||||||
@@ -75,7 +75,7 @@ credential for the user in the **kubectl** config file.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ oidc-auth -b <connector-id> -c <ip> -u <username>
|
~(keystone_admin)]$ oidc-auth -b <connector-id> -c <ip> -u <username>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2,71 +2,34 @@
|
|||||||
.. lgd1552571882796
|
.. lgd1552571882796
|
||||||
.. _overview-of-system-accounts:
|
.. _overview-of-system-accounts:
|
||||||
|
|
||||||
=====================================
|
==================
|
||||||
Overview of StarlingX System Accounts
|
Linux UserAccounts
|
||||||
=====================================
|
==================
|
||||||
|
|
||||||
A brief description of the system accounts available in a |prod| system.
|
A brief description of the system accounts available in a |prod| system.
|
||||||
|
|
||||||
|
|
||||||
.. _overview-of-system-accounts-section-N1001F-N1001C-N10001:
|
**Sysadmin Local Linux Account**
|
||||||
|
This is a local, per-host, sudo-enabled account created automatically when
|
||||||
|
a new host is provisioned. It is used by the primary system administrator
|
||||||
|
for |prod|, as it has extended privileges.
|
||||||
|
|
||||||
------------------------
|
See :ref:`The sysadmin Account <the-sysadmin-account>` for more details.
|
||||||
Types of System Accounts
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
- **sysadmin Local Linux Account**
|
**Local Linux User Accounts**
|
||||||
This is a local, per-host, account created automatically when a new host
|
Local Linux User Accounts should NOT be created since they are used for
|
||||||
is provisioned. This account has extended privileges and is used by the
|
internal system purposes.
|
||||||
system administrator.
|
|
||||||
|
|
||||||
- **Local Linux User Accounts**
|
**Local LDAP Linux User Accounts**
|
||||||
These are local, regular Linux user accounts that are typically used for
|
These are local LDAP accounts that are centrally managed across all hosts
|
||||||
internal system purposes and generally should not be created by an end
|
in the cluster. These accounts are intended to provide additional admin
|
||||||
user.
|
level user accounts \(in addition to sysadmin\) that can SSH to the nodes
|
||||||
|
of the |prod|.
|
||||||
|
|
||||||
If the administrator wants to provision additional access to the system,
|
See :ref:`Local LDAP Linux User Accounts <local-ldap-linux-user-accounts>`
|
||||||
it is better to configure local LDAP Linux accounts.
|
for more details.
|
||||||
|
|
||||||
- **Local LDAP Linux User Accounts**
|
|
||||||
|prod| provides support for Local Ldap Linux User Accounts. Local LDAP
|
|
||||||
accounts are centrally managed; changes to local LDAP accounts made on
|
|
||||||
any host are propagated automatically to all hosts on the cluster.
|
|
||||||
|
|
||||||
|prod| includes a set of scripts for creating LDAP Linux accounts with
|
|
||||||
support for providing Keystone user account credentials. \(The scripts do
|
|
||||||
not create Keystone accounts for you. The scripts allow for sourcing or
|
|
||||||
accessing the Keystone user account credentials.\)
|
|
||||||
|
|
||||||
The intended use of these accounts is to provide additional admin level
|
|
||||||
user accounts \(in addition to sysadmin\) that can SSH to the nodes of
|
|
||||||
the |prod|.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
For security reasons, it is recommended that ONLY admin level users
|
For security reasons, it is recommended that ONLY admin level users be
|
||||||
be allowed to SSH to the nodes of the |prod|. Non-admin level users
|
allowed to |SSH| to the nodes of the |prod|. Non-admin level users should
|
||||||
should strictly use remote CLIs or remote web GUIs..
|
strictly use remote |CLIs| or remote web GUIs.
|
||||||
|
|
||||||
These Local LDAP Linux user accounts can be associated with a Keystone
|
|
||||||
account. You can use the provided scripts to create these Local LDAP
|
|
||||||
Linux user accounts and synchronize them with the credentials of an
|
|
||||||
associated Keystone account, so that the Linux user can leverage
|
|
||||||
StarlingX CLI commands.
|
|
||||||
|
|
||||||
- **Kubernetes Service Accounts**
|
|
||||||
|prod| uses Kubernetes service accounts and |RBAC| policies for
|
|
||||||
authentication and authorization of users of the Kubernetes API, CLI, and
|
|
||||||
Dashboard.
|
|
||||||
|
|
||||||
- **Keystone Accounts**
|
|
||||||
|prod-long| uses Keystone for authentication and authorization of users
|
|
||||||
of the StarlingX REST APIs, the CLI, the Horizon Web interface and the
|
|
||||||
Local Docker Registry. |prod|'s Keystone uses the default local SQL
|
|
||||||
Backend.
|
|
||||||
|
|
||||||
- **Remote Windows Active Directory Accounts**
|
|
||||||
|prod| can optionally be configured to use remote Windows Active
|
|
||||||
Directory Accounts and native Kubernetes |RBAC| policies for
|
|
||||||
authentication and authorization of users of the Kubernetes API,
|
|
||||||
CLI, and Dashboard.
|
|
||||||
|
|
||||||
|
@@ -6,6 +6,10 @@
|
|||||||
Password Recovery
|
Password Recovery
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
This section describes how to change or reset a Keystone user password.
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
- Do one of the following to change a Keystone admin user password at any
|
- Do one of the following to change a Keystone admin user password at any
|
||||||
@@ -18,7 +22,7 @@ Password Recovery
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ openstack user password set
|
~(keystone_admin)]$ openstack user password set
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
Both controller nodes must be locked and unlocked after changing
|
Both controller nodes must be locked and unlocked after changing
|
||||||
@@ -30,7 +34,7 @@ Password Recovery
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ openstack user set --password <temp_password> <user>
|
~(keystone_admin)]$ openstack user set --password <temp_password> <user>
|
||||||
|
|
||||||
where <user> is the username and <temp\_password> is a temporary password.
|
where <user> is the username and <temp\_password> is a temporary password.
|
||||||
|
|
||||||
|
@@ -6,15 +6,16 @@
|
|||||||
Remote Access for Linux Accounts
|
Remote Access for Linux Accounts
|
||||||
================================
|
================================
|
||||||
|
|
||||||
You can log in remotely as a Linux user using :command:`ssh`.
|
You can log in remotely as a Linux user\(either sysadmin or a local |LDAP|
|
||||||
|
user\) using :command:`ssh`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
For security reasons, it is recommended that ONLY admin level users be
|
For security reasons, it is recommended that ONLY admin level users be
|
||||||
allowed to SSH to the nodes of the |prod|. Non-admin level users should
|
allowed to |SSH| to the nodes of the |prod|. Non-admin level users should
|
||||||
strictly use remote CLIs or remote web GUIs.
|
strictly use remote |CLIs| or remote web GUIs.
|
||||||
|
|
||||||
Specifying the OAM floating IP address as the target establishes a
|
Specifying the |OAM| floating IP address as the target establishes a
|
||||||
connection to the currently active controller; however, if the OAM floating
|
connection to the currently active controller; however, if the |OAM| floating
|
||||||
IP address moves from one controller node to another, the ssh session is
|
IP address moves from one controller node to another, the ssh session is
|
||||||
blocked. To ensure access to a particular controller regardless of its
|
blocked. To ensure access to a particular controller regardless of its
|
||||||
current role, specify the controller physical address instead.
|
current role, specify the controller physical address instead.
|
||||||
|
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.. yda1607977206655
|
||||||
|
.. _remote-windows-active-directory-accounts:
|
||||||
|
|
||||||
|
========================================
|
||||||
|
Remote Windows Active Directory Accounts
|
||||||
|
========================================
|
||||||
|
|
||||||
|
|prod| can optionally be configured to use remote Windows Active Directory
|
||||||
|
Accounts and native Kubernetes |RBAC| policies for authentication and
|
||||||
|
authorization of users of the Kubernetes API, |CLI|, and Dashboard.
|
||||||
|
|
||||||
|
See :ref:`User Authentication Using Windows Active Directory
|
||||||
|
<overview-of-windows-active-directory>` for more details.
|
||||||
|
|
@@ -15,7 +15,7 @@ system.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-remove portieris
|
~(keystone_admin)]$ system application-remove portieris
|
||||||
|
|
||||||
#. Delete kubernetes resources not automatically removed in the previous step.
|
#. Delete kubernetes resources not automatically removed in the previous step.
|
||||||
|
|
||||||
@@ -23,11 +23,11 @@ system.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl delete clusterroles.rbac.authorization.k8s.io portieris
|
~(keystone_admin)]$ kubectl delete clusterroles.rbac.authorization.k8s.io portieris
|
||||||
~(keystone_admin)$ kubectl delete clusterrolebindings.rbac.authorization.k8s.io admission-portieris-webhook
|
~(keystone_admin)]$ kubectl delete clusterrolebindings.rbac.authorization.k8s.io admission-portieris-webhook
|
||||||
~(keystone_admin)$ kubectl delete -n portieris secret/portieris-certs
|
~(keystone_admin)]$ kubectl delete -n portieris secret/portieris-certs
|
||||||
~(keystone_admin)$ kubectl delete -n portieris cm/image-policy-crds
|
~(keystone_admin)]$ kubectl delete -n portieris cm/image-policy-crds
|
||||||
~(keystone_admin)$ kubectl delete -n portieris serviceaccounts/portieris
|
~(keystone_admin)]$ kubectl delete -n portieris serviceaccounts/portieris
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If this step is done before removing the application in step 1, the
|
If this step is done before removing the application in step 1, the
|
||||||
@@ -37,19 +37,19 @@ system.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl delete MutatingWebhookConfiguration image-admission-config --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete MutatingWebhookConfiguration image-admission-config --ignore-not-found=true
|
||||||
~(keystone_admin)$ kubectl delete ValidatingWebhookConfiguration image-admission-config --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete ValidatingWebhookConfiguration image-admission-config --ignore-not-found=true
|
||||||
~(keystone_admin)$ kubectl delete crd clusterimagepolicies.securityenforcement.admission.cloud.ibm.com imagepolicies.securityenforcement.admission.cloud.ibm.com --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete crd clusterimagepolicies.securityenforcement.admission.cloud.ibm.com imagepolicies.securityenforcement.admission.cloud.ibm.com --ignore-not-found=true
|
||||||
~(keystone_admin)$ kubectl delete clusterroles.rbac.authorization.k8s.io portieris --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete clusterroles.rbac.authorization.k8s.io portieris --ignore-not-found=true
|
||||||
~(keystone_admin)$ kubectl delete clusterrolebindings.rbac.authorization.k8s.io admission-portieris-webhook --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete clusterrolebindings.rbac.authorization.k8s.io admission-portieris-webhook --ignore-not-found=true
|
||||||
~(keystone_admin)$ kubectl delete ns/portieris --ignore-not-found=true
|
~(keystone_admin)]$ kubectl delete ns/portieris --ignore-not-found=true
|
||||||
~(keystone_admin)$ helm delete portieris-portieris --purge --no-hooks
|
~(keystone_admin)]$ helm delete portieris-portieris --purge --no-hooks
|
||||||
~(keystone_admin)$ system application-remove portieris
|
~(keystone_admin)]$ system application-remove portieris
|
||||||
|
|
||||||
#. Delete the application.
|
#. Delete the application.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system application-delete portieris
|
~(keystone_admin)]$ system application-delete portieris
|
||||||
|
|
||||||
|
|
||||||
|
@@ -31,17 +31,18 @@ re-installed, in order to update the new standby controller's |TPM| device.
|
|||||||
|
|
||||||
.. _secure-starlingx-rest-and-web-certificates-private-key-storage-with-tpm-ul-xj3-mqc-d1b:
|
.. _secure-starlingx-rest-and-web-certificates-private-key-storage-with-tpm-ul-xj3-mqc-d1b:
|
||||||
|
|
||||||
- Obtain a Root |CA|-signed certificate and key from a trusted Root
|
- Obtain an intermediate or Root |CA|-signed certificate and key from a
|
||||||
|CA|. Refer to the documentation for the external Root |CA| that you
|
trusted intermediate or Root |CA|. Refer to the documentation for the
|
||||||
are using, on how to create public certificate and private key pairs,
|
external intermediate or Root |CA| that you are using, on how to create
|
||||||
signed by a Root |CA|, for HTTPS.
|
public certificate and private key pairs, signed by an intermediate or
|
||||||
|
Root-signed |CA|, for HTTPS.
|
||||||
|
|
||||||
.. xbooklink
|
.. xbooklink
|
||||||
|
|
||||||
For lab purposes, see :ref:`Locally Creating Certificates
|
For lab purposes, see :ref:`Locally Creating Certificates
|
||||||
<creating-certificates-locally-using-openssl>` for details on how to
|
<creating-certificates-locally-using-openssl>` for details on how to create
|
||||||
create a test Root |CA| certificate and key, and use it to sign test
|
a test intermediate or Root |CA| certificate and key, and use it to sign
|
||||||
certificates.
|
test certificates.
|
||||||
|
|
||||||
Put the |PEM| encoded versions of the certificate and key in a
|
Put the |PEM| encoded versions of the certificate and key in a
|
||||||
single file, and copy the file to the controller host.
|
single file, and copy the file to the controller host.
|
||||||
@@ -88,8 +89,8 @@ re-installed, in order to update the new standby controller's |TPM| device.
|
|||||||
|
|
||||||
**<pathTocertificateAndKey>**
|
**<pathTocertificateAndKey>**
|
||||||
|
|
||||||
is the path to the file containing both the Root |CA|-signed
|
is the path to the file containing both the intermediate or Root
|
||||||
certificate and private key to install.
|
|CA|-signed certificate and private key to install.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
For security purposes, the utility deletes the provided SSL private
|
For security purposes, the utility deletes the provided SSL private
|
||||||
@@ -159,7 +160,7 @@ scenario, you must reinstall the certificate:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install -m tpm_mode
|
~(keystone_admin)]$ system certificate-install -m tpm_mode
|
||||||
<pathTocertificateAndKey>
|
<pathTocertificateAndKey>
|
||||||
|
|
||||||
To disable the use of |TPM| to store the private key of the StarlingX REST
|
To disable the use of |TPM| to store the private key of the StarlingX REST
|
||||||
@@ -168,5 +169,5 @@ option:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install <pathTocertificateAndKey>
|
~(keystone_admin)]$ system certificate-install <pathTocertificateAndKey>
|
||||||
|
|
||||||
|
@@ -6,14 +6,14 @@
|
|||||||
Configure Container-backed Remote CLIs and Clients
|
Configure Container-backed Remote CLIs and Clients
|
||||||
==================================================
|
==================================================
|
||||||
|
|
||||||
The command line can be accessed from remote computers running Linux, OSX,
|
The |prod| command lines can be accessed from remote computers running Linux,
|
||||||
and Windows.
|
MacOS, and Windows.
|
||||||
|
|
||||||
.. rubric:: |context|
|
.. rubric:: |context|
|
||||||
|
|
||||||
This functionality is made available using a docker image for connecting to
|
This functionality is made available using a docker container with
|
||||||
the |prod| remotely. This docker image is pulled as required by
|
pre-installed CLIs and clients. The container's image is pulled as required by
|
||||||
configuration scripts.
|
the remote CLI/client configuration scripts.
|
||||||
|
|
||||||
.. rubric:: |prereq|
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
@@ -22,6 +22,21 @@ more information on installing Docker, see
|
|||||||
`https://docs.docker.com/install/ <https://docs.docker.com/install/>`__.
|
`https://docs.docker.com/install/ <https://docs.docker.com/install/>`__.
|
||||||
For Windows remote clients, Docker is only supported on Windows 10.
|
For Windows remote clients, Docker is only supported on Windows 10.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
You must be able to run docker commands using one of the following options:
|
||||||
|
|
||||||
|
.. _security-configure-container-backed-remote-clis-and-clients-d70e42:
|
||||||
|
|
||||||
|
- Running the scripts using sudo
|
||||||
|
|
||||||
|
- Adding the Linux user to the docker group
|
||||||
|
|
||||||
|
|
||||||
|
For more information, see,
|
||||||
|
`https://docs.docker.com/engine/install/linux-postinstall/
|
||||||
|
<https://docs.docker.com/engine/install/linux-postinstall/>`__
|
||||||
|
|
||||||
|
|
||||||
For Windows remote clients, you must run the following commands from a
|
For Windows remote clients, you must run the following commands from a
|
||||||
Cygwin terminal. See `https://www.cygwin.com/ <https://www.cygwin.com/>`__
|
Cygwin terminal. See `https://www.cygwin.com/ <https://www.cygwin.com/>`__
|
||||||
for more information about the Cygwin project.
|
for more information about the Cygwin project.
|
||||||
@@ -33,23 +48,31 @@ Download the latest release tarball for Cygwin from
|
|||||||
tarball, extract it to any location and change the Windows <PATH> variable
|
tarball, extract it to any location and change the Windows <PATH> variable
|
||||||
to include its bin folder from the extracted winpty folder.
|
to include its bin folder from the extracted winpty folder.
|
||||||
|
|
||||||
The following procedure shows how to configure the Container-backed Remote
|
The following procedure shows how to configure the Container-backed Remote CLIs
|
||||||
CLIs and Clients for an admin user with cluster-admin clusterrole. If using
|
and Clients for an admin user with cluster-admin clusterrole. If using a
|
||||||
a non-admin user such as one with role privileges only within a private
|
non-admin user such as one with privileges only within a private namespace,
|
||||||
namespace, additional configuration is required in order to use
|
additional configuration is required in order to use :command:`helm`.
|
||||||
:command:`helm`.
|
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
|
||||||
.. _security-configure-container-backed-remote-clis-and-clients-d70e74:
|
.. _security-configure-container-backed-remote-clis-and-clients-d70e93:
|
||||||
|
|
||||||
#. On the Controller, configure a Kubernetes service account for user on the remote client.
|
#. On the Controller, configure a Kubernetes service account for user on the remote client.
|
||||||
|
|
||||||
You must configure a Kubernetes service account on the target system
|
You must configure a Kubernetes service account on the target system
|
||||||
and generate a configuration file based on that service account.
|
and generate a configuration file based on that service account.
|
||||||
|
|
||||||
Run the following commands logged in as **root** on the local console of the controller.
|
Run the following commands logged in as **sysadmin** on the local console
|
||||||
|
of the controller.
|
||||||
|
|
||||||
|
|
||||||
|
#. Source the platform environment
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
$ source /etc/platform/openrc
|
||||||
|
~(keystone_admin)]$
|
||||||
|
|
||||||
|
|
||||||
#. Set environment variables.
|
#. Set environment variables.
|
||||||
@@ -60,14 +83,14 @@ namespace, additional configuration is required in order to use
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% USER="admin-user"
|
~(keystone_admin)]$ USER="admin-user"
|
||||||
% OUTPUT_FILE="temp-kubeconfig"
|
~(keystone_admin)]$ OUTPUT_FILE="temp-kubeconfig"
|
||||||
|
|
||||||
#. Create an account definition file.
|
#. Create an account definition file.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% cat <<EOF > admin-login.yaml
|
~(keystone_admin)]$ cat <<EOF > admin-login.yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
@@ -92,59 +115,54 @@ namespace, additional configuration is required in order to use
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% kubectl apply -f admin-login.yaml
|
~(keystone_admin)]$ kubectl apply -f admin-login.yaml
|
||||||
|
|
||||||
#. Store the token value.
|
#. Store the token value.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% TOKEN_DATA=$(kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${USER} | awk '{print $1}') | grep "token:" | awk '{print $2}')
|
~(keystone_admin)]$ TOKEN_DATA=$(kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${USER} | awk '{print $1}') | grep "token:" | awk '{print $2}')
|
||||||
|
|
||||||
#. Source the platform environment.
|
#. Store the |OAM| IP address.
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
% source /etc/platform/openrc
|
|
||||||
|
|
||||||
#. Store the OAM IP address.
|
|
||||||
|
|
||||||
|
|
||||||
1. .. code-block:: none
|
#. .. code-block:: none
|
||||||
|
|
||||||
% OAM_IP=$(system oam-show |grep oam_floating_ip| awk '{print $4}')
|
~(keystone_admin)]$ OAM_IP=$(system oam-show |grep oam_floating_ip| awk '{print $4}')
|
||||||
|
|
||||||
2. AIO-SX uses <oam\_ip> instead of <oam\_floating\_ip>. The
|
#. AIO-SX uses <oam\_ip> instead of <oam\_floating\_ip>. The
|
||||||
following shell code ensures that <OAM\_IP> is assigned the correct
|
following shell code ensures that <OAM\_IP> is assigned the correct
|
||||||
IP address.
|
IP address.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% if [ -z "$OAM_IP" ]; then
|
~(keystone_admin)]$ if [ -z "$OAM_IP" ]; then
|
||||||
OAM_IP=$(system oam-show |grep oam_ip| awk '{print $4}')
|
OAM_IP=$(system oam-show |grep oam_ip| awk '{print $4}')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
3. IPv6 addresses must be enclosed in square brackets. The following shell code does this for you.
|
#. IPv6 addresses must be enclosed in square brackets. The following
|
||||||
|
shell code does this for you.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% if [[ $OAM_IP =~ .*:.* ]]; then
|
~(keystone_admin)]$ if [[ $OAM_IP =~ .*:.* ]]; then
|
||||||
OAM_IP="[${OAM_IP}]"
|
OAM_IP="[${OAM_IP}]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#. Generate the temp-kubeconfig file.
|
#. Generate the admin-kubeconfig file.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
% sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-cluster wrcp-cluster --server=https://${OAM_IP}:6443 --insecure-skip-tls-verify
|
~(keystone_admin)]$ sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-cluster wrcp-cluster --server=https://${OAM_IP}:6443 --insecure-skip-tls-verify
|
||||||
% sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-credentials ${USER} --token=$TOKEN_DATA
|
~(keystone_admin)]$ sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-credentials ${USER} --token=$TOKEN_DATA
|
||||||
% sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-context ${USER}@wrcp-cluster --cluster=wrcp-cluster --user ${USER} --namespace=default
|
~(keystone_admin)]$ sudo kubectl config --kubeconfig ${OUTPUT_FILE} set-context ${USER}@wrcp-cluster --cluster=wrcp-cluster --user ${USER} --namespace=default
|
||||||
% sudo kubectl config --kubeconfig ${OUTPUT_FILE} use-context ${USER}@wrcp-cluster
|
~(keystone_admin)]$ sudo kubectl config --kubeconfig ${OUTPUT_FILE} use-context ${USER}@wrcp-cluster
|
||||||
|
|
||||||
#. On the remote client, install the remote client tarball file from the
|
#. Copy the remote client tarball file from the |prod| build servers
|
||||||
StarlingX CENGEN build servers..
|
to the remote workstation, and extract its content.
|
||||||
|
|
||||||
|
|
||||||
- The tarball is available from the |prod| area on the StarlingX CENGEN build servers.
|
- The tarball is available from the |prod| area on the StarlingX CENGEN build servers.
|
||||||
@@ -152,187 +170,162 @@ namespace, additional configuration is required in order to use
|
|||||||
- You can extract the tarball's contents anywhere on your client system.
|
- You can extract the tarball's contents anywhere on your client system.
|
||||||
|
|
||||||
|
|
||||||
While it is not strictly required to extract the tarball before other
|
.. parsed-literal::
|
||||||
steps, subsequent steps in this example copy files to the extracted
|
|
||||||
directories as a convenience when running configuration scripts.
|
|
||||||
|
|
||||||
#. Download the openrc file from the Horizon Web interface to the remote client.
|
$ cd $HOME
|
||||||
|
$ tar xvf |prefix|-remote-clients-<version>.tgz
|
||||||
|
|
||||||
|
#. Download the user/tenant openrc file from the Horizon Web interface to the
|
||||||
|
remote workstation.
|
||||||
|
|
||||||
|
|
||||||
#. Log in to Horizon as the user and tenant that you want to configure remote access for.
|
#. Log in to Horizon as the user and tenant that you want to configure remote access for.
|
||||||
|
|
||||||
|
In this example, the 'admin' user in the 'admin' tenant.
|
||||||
|
|
||||||
#. Navigate to **Project** \> **API Access** \> **Download Openstack RC file**.
|
#. Navigate to **Project** \> **API Access** \> **Download Openstack RC file**.
|
||||||
|
|
||||||
#. Select **Openstack RC file**.
|
#. Select **Openstack RC file**.
|
||||||
|
|
||||||
|
The file admin-openrc.sh downloads.
|
||||||
|
|
||||||
|
|
||||||
#. Copy the temp-kubeconfig file to the remote workstation.
|
#. Copy the admin-kubeconfig file to the remote workstation.
|
||||||
|
|
||||||
You can copy the file to any location on the remote workstation. For
|
You can copy the file to any location on the remote workstation. For
|
||||||
convenience, this example assumes that it is copied to the location of
|
convenience, this example assumes that it is copied to the location of
|
||||||
the extracted tarball.
|
the extracted tarball.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Ensure the temp-kubeconfig file has 666 permissions after copying
|
Ensure that the admin-kubeconfig file has 666 permissions after copying
|
||||||
the file to the remote workstation, otherwise, use the following
|
the file to the remote workstation, otherwise, use the following
|
||||||
command to change permissions, :command:`chmod 666 temp\_kubeconfig`.
|
command to change permissions, :command:`chmod 666 temp\_kubeconfig`.
|
||||||
|
|
||||||
#. On the remote client, configure the client access.
|
#. On the remote workstation, configure remote CLI/client access.
|
||||||
|
|
||||||
|
This step will also generate a remote CLI/client RC file.
|
||||||
|
|
||||||
#. Change to the location of the extracted tarball.
|
#. Change to the location of the extracted tarball.
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
#. Run the :command:`configure\_client.sh` script to generate a client access file for the platform.
|
$ cd $HOME/|prefix|-remote-clients-<version>/
|
||||||
|
|
||||||
.. note::
|
#. Create a working directory that will be mounted by the container
|
||||||
For remote CLI commands that require local filesystem access,
|
implementing the remote |CLIs|.
|
||||||
you can specify a working directory when running
|
|
||||||
:command:`configure\_client.sh` using the -w option. If no
|
See the description of the :command:`configure\_client.sh` -w option
|
||||||
directory is specified, the location from which the
|
:ref:`below
|
||||||
:command:`configure\_client.sh` was run is used for local file
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
access by remote cli commands. This working directory is
|
for more details.
|
||||||
mounted at /wd in the docker container. If remote CLI commands
|
|
||||||
need access to local files, copy the files to your configured
|
|
||||||
work directory and then provide the command with the path to
|
|
||||||
the mounted folder inside the container.
|
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
$ mkdir -p $HOME/remote_wd
|
$ mkdir -p $HOME/remote_cli_wd
|
||||||
$ ./configure_client.sh -t platform -r admin_openrc.sh -k temp-kubeconfig \
|
|
||||||
-w HOME/remote_wd
|
|
||||||
$ cd $HOME/remote_wd
|
|
||||||
|
|
||||||
By default, configure\_client.sh will use container images from
|
#. Run the :command:`configure\_client.sh` script.
|
||||||
docker.io for both platform clients and openstack clients. You can
|
|
||||||
optionally use the -p and -a options to override the default docker
|
|
||||||
with one or two others from a custom registry. For example, to use
|
|
||||||
the container images from the WRS AWS ECR
|
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
$ ./configure_client.sh -t platform -r admin_openrc.sh -k
|
$ ./configure_client.sh -t platform -r admin_openrc.sh -k
|
||||||
temp-kubeconfig -w HOME/remote_wd -p
|
admin-kubeconfig -w HOME/remote_cli_wd -p
|
||||||
625619392498.dkr.ecr.us-west-2.amazonaws.com/starlingx/stx-platfo
|
625619392498.dkr.ecr.us-west-2.amazonaws.com/docker.io/starlingx/stx-platfo
|
||||||
rmclients:stx.4.0-v1.3.0 -a
|
rmclients:stx.4.0-v1.3.0
|
||||||
625619392498.dkr.ecr.us-west-2.amazonaws.com/starlingx/stx-openst
|
|
||||||
ackclients:master-centos-stable-latest
|
|
||||||
|
|
||||||
If you are working with repositories that require authentication,
|
If you specify repositories that require authentication, as shown
|
||||||
you must first perform a :command:`docker login` to that repository
|
above, you must first remember to perform a :command:`docker login` to
|
||||||
before using remote clients.
|
that repository before using remote |CLIs| for the first time.
|
||||||
|
|
||||||
A remote\_client\_platform.sh file is generated for use accessing the platform CLI.
|
The options for configure\_client.sh are:
|
||||||
|
|
||||||
|
**-t**
|
||||||
|
The type of client configuration. The options are platform \(for
|
||||||
|
|prod-long| |CLI| and clients\) and openstack \(for |prod-os| application
|
||||||
|
|CLI| and clients\).
|
||||||
|
|
||||||
#. Test workstation access to the remote platform CLI.
|
The default value is platform.
|
||||||
|
|
||||||
Enter your platform password when prompted.
|
**-r**
|
||||||
|
The user/tenant RC file to use for :command:`openstack` CLI commands.
|
||||||
|
|
||||||
.. note::
|
The default value is admin-openrc.sh.
|
||||||
The first usage of a command will be slow as it requires that the
|
|
||||||
docker image supporting the remote clients be pulled from the
|
|
||||||
remote registry.
|
|
||||||
|
|
||||||
.. code-block:: none
|
**-k**
|
||||||
|
The kubernetes configuration file to use for :command:`kubectl` and :command:`helm` CLI commands.
|
||||||
|
|
||||||
root@myclient:/home/user/remote_wd# source remote_client_platform.sh
|
The default value is temp-kubeconfig.
|
||||||
Please enter your OpenStack Password for project admin as user admin:
|
|
||||||
root@myclient:/home/user/remote_wd# system host-list
|
|
||||||
+----+--------------+-------------+----------------+-------------+--------------+
|
|
||||||
| id | hostname | personality | administrative | operational | availability |
|
|
||||||
+----+--------------+-------------+----------------+-------------+--------------+
|
|
||||||
| 1 | controller-0 | controller | unlocked | enabled | available |
|
|
||||||
| 2 | controller-1 | controller | unlocked | enabled | available |
|
|
||||||
| 3 | compute-0 | worker | unlocked | enabled | available |
|
|
||||||
| 4 | compute-1 | worker | unlocked | enabled | available |
|
|
||||||
+----+--------------+-------------+----------------+-------------+--------------+
|
|
||||||
root@myclient:/home/user/remote_wd# kubectl -n kube-system get pods
|
|
||||||
NAME READY STATUS RESTARTS AGE
|
|
||||||
calico-kube-controllers-767467f9cf-wtvmr 1/1 Running 1 3d2h
|
|
||||||
calico-node-j544l 1/1 Running 1 3d
|
|
||||||
calico-node-ngmxt 1/1 Running 1 3d1h
|
|
||||||
calico-node-qtc99 1/1 Running 1 3d
|
|
||||||
calico-node-x7btl 1/1 Running 4 3d2h
|
|
||||||
ceph-pools-audit-1569848400-rrpjq 0/1 Completed 0 12m
|
|
||||||
ceph-pools-audit-1569848700-jhv5n 0/1 Completed 0 7m26s
|
|
||||||
ceph-pools-audit-1569849000-cb988 0/1 Completed 0 2m25s
|
|
||||||
coredns-7cf476b5c8-5x724 1/1 Running 1 3d2h
|
|
||||||
...
|
|
||||||
root@myclient:/home/user/remote_wd#
|
|
||||||
|
|
||||||
.. note::
|
**-o**
|
||||||
Some commands used by remote CLI are designed to leave you in a shell prompt, for example:
|
The remote CLI/client RC file generated by this script.
|
||||||
|
|
||||||
|
This RC file needs to be sourced in the shell, to setup required
|
||||||
|
environment variables and aliases, before running any remote |CLI|
|
||||||
|
commands.
|
||||||
|
|
||||||
|
For the platform client setup, the default is
|
||||||
|
remote\_client\_platform.sh. For the openstack application client
|
||||||
|
setup, the default is remote\_client\_app.sh.
|
||||||
|
|
||||||
|
**-w**
|
||||||
|
The working directory that will be mounted by the container
|
||||||
|
implementing the remote |CLIs|. When using the remote |CLIs|, any files
|
||||||
|
passed as arguments to the remote |CLI| commands need to be in this
|
||||||
|
directory in order for the container to access the files. The default
|
||||||
|
value is the directory from which the :command:`configure\_client.sh`
|
||||||
|
command was run.
|
||||||
|
|
||||||
|
**-p**
|
||||||
|
Override the container image for the platform |CLI| and clients.
|
||||||
|
|
||||||
|
By default, the platform |CLIs| and clients container image is pulled
|
||||||
|
from docker.io/starlingx/stx-platformclients.
|
||||||
|
|
||||||
|
For example, to use the container images from the WRS AWS ECR:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
root@myclient:/home/user/remote_wd# openstack
|
$ ./configure_client.sh -t platform -r admin-openrc.sh -k
|
||||||
|
admin-kubeconfig -w $HOME/remote_cli_wd -p
|
||||||
|
625619392498.dkr.ecr.us-west-2.amazonaws.com/docker.io/starlingx/stx-platformclients:stx.4.0-v1.3.0-wrs.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
or
|
If you specify repositories that require authentication, you must first
|
||||||
|
perform a :command:`docker login` to that repository before using
|
||||||
|
remote |CLIs|.
|
||||||
|
|
||||||
.. code-block:: none
|
**-a**
|
||||||
|
Override the OpenStack application image.
|
||||||
|
|
||||||
root@myclient:/home/user/remote_wd# kubectl exec -ti <pod_name> -- /bin/bash
|
By default, the OpenStack |CLIs| and clients container image is pulled
|
||||||
|
from docker.io/starlingx/stx-openstackclients.
|
||||||
|
|
||||||
In some cases the mechanism for identifying commands that should
|
The :command:`configure-client.sh` command will generate a remote\_client\_platform.sh RC file. This RC file needs to be sourced in the shell to set up required environment variables and aliases before any remote CLI commands can be run.
|
||||||
leave you at a shell prompt does not identify them correctly. If
|
|
||||||
you encounter such scenarios, you can force-enable or disable the
|
|
||||||
shell options using the <FORCE\_SHELL> or <FORCE\_NO\_SHELL>
|
|
||||||
variables before the command.
|
|
||||||
|
|
||||||
For example:
|
#. Copy the file remote\_client\_platform.sh to $HOME/remote\_cli\_wd
|
||||||
|
|
||||||
.. code-block:: none
|
.. rubric:: |postreq|
|
||||||
|
|
||||||
root@myclient:/home/user/remote_wd# FORCE_SHELL=true kubectl exec -ti <pod_name> -- /bin/bash
|
After configuring the platform's container-backed remote CLIs/clients, the
|
||||||
root@myclient:/home/user/remote_wd# FORCE_NO_SHELL=true kubectl exec <pod_name> -- ls
|
remote platform CLIs can be used in any shell after sourcing the generated
|
||||||
|
remote CLI/client RC file. This RC file sets up the required environment
|
||||||
|
variables and aliases for the remote |CLI| commands.
|
||||||
|
|
||||||
You cannot use both variables at the same time.
|
.. note::
|
||||||
|
Consider adding this command to your .login or shell rc file, such
|
||||||
#. If you need to run a remote CLI command that references a local file,
|
that your shells will automatically be initialized with the environment
|
||||||
then that file must be copied to or created in the working directory
|
variables and aliases for the remote |CLI| commands.
|
||||||
specified on the ./config\_client.sh command and referenced as under /wd/
|
|
||||||
in the actual command.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
root@myclient:/home/user# cd $HOME/remote_wd
|
|
||||||
root@myclient:/home/user/remote_wd# kubectl -n kube-system create -f test/test.yml
|
|
||||||
pod/test-pod created
|
|
||||||
root@myclient:/home/user/remote_wd# kubectl -n kube-system delete -f test/test.yml
|
|
||||||
pod/test-pod deleted
|
|
||||||
|
|
||||||
#. Do the following to use helm.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
For non-admin users, additional configuration is required first as
|
|
||||||
discussed in *Configure Remote Helm Client for Non-Admin Users*.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
When using helm, any command that requires access to a helm
|
|
||||||
repository \(managed locally\) will require that you be in the
|
|
||||||
$HOME/remote\_wd directory and use the --home ./helm option.
|
|
||||||
|
|
||||||
|
|
||||||
#. Do the initial setup of the helm client.
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
% helm init --client-only --home "./.helm"
|
|
||||||
|
|
||||||
#. Run a helm command.
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
$ helm list
|
|
||||||
$ helm install --name wordpress stable/wordpress --home "./helm"
|
|
||||||
|
|
||||||
|
See :ref:`Using Container-backed Remote CLIs and Clients <using-container-backed-remote-clis-and-clients>` for details.
|
||||||
|
|
||||||
|
**Related information**
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
|
:ref:`Using Container-backed Remote CLIs and Clients
|
||||||
|
<using-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
:ref:`Install Kubectl and Helm Clients Directly on a Host
|
||||||
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ You can view the configured firewall rules with the following command:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ kubectl describe globalnetworkpolicy
|
~(keystone_admin)]$ kubectl describe globalnetworkpolicy
|
||||||
Name: controller-oam-if-gnp
|
Name: controller-oam-if-gnp
|
||||||
Namespace:
|
Namespace:
|
||||||
Labels: <none>
|
Labels: <none>
|
||||||
@@ -85,7 +85,7 @@ You can view the configured firewall rules with the following command:
|
|||||||
Where:
|
Where:
|
||||||
|
|
||||||
|
|
||||||
.. _security-default-firewall-rules-d477e47:
|
.. _security-default-firewall-rules-d488e47:
|
||||||
|
|
||||||
|
|
||||||
.. table::
|
.. table::
|
||||||
|
@@ -6,25 +6,25 @@
|
|||||||
Firewall Options
|
Firewall Options
|
||||||
================
|
================
|
||||||
|
|
||||||
|prod| incorporates a default firewall for the OAM network. You can configure
|
|prod| incorporates a default firewall for the |OAM| network. You can configure
|
||||||
additional Kubernetes Network Policies in order to augment or override the
|
additional Kubernetes Network Policies in order to augment or override the
|
||||||
default rules.
|
default rules.
|
||||||
|
|
||||||
The |prod| firewall uses the Kubernetes Network Policies \(using the Calico
|
The |prod| firewall uses the Kubernetes Network Policies \(using the Calico
|
||||||
CNI\) to implement a firewall on the OAM network.
|
|CNI|\) to implement a firewall on the |OAM| network.
|
||||||
|
|
||||||
A minimal set of rules is always applied before any custom rules, as follows:
|
A minimal set of rules is always applied before any custom rules, as follows:
|
||||||
|
|
||||||
|
|
||||||
.. _security-firewall-options-d628e35:
|
.. _security-firewall-options-ul-xw2-qkw-g3b:
|
||||||
|
|
||||||
- Non-OAM traffic is always accepted.
|
- Non-|OAM| traffic is always accepted.
|
||||||
|
|
||||||
- Egress traffic is always accepted.
|
- Egress traffic is always accepted.
|
||||||
|
|
||||||
- |SM| traffic is always accepted.
|
- |SM| traffic is always accepted.
|
||||||
|
|
||||||
- SSH traffic is always accepted.
|
- |SSH| traffic is always accepted.
|
||||||
|
|
||||||
|
|
||||||
You can introduce custom rules by creating and installing custom Kubernetes
|
You can introduce custom rules by creating and installing custom Kubernetes
|
||||||
|
@@ -18,13 +18,13 @@ A minimal set of rules is always applied before any custom rules, as follows:
|
|||||||
|
|
||||||
.. _firewall-options-ul-gjq-k1g-mmb:
|
.. _firewall-options-ul-gjq-k1g-mmb:
|
||||||
|
|
||||||
- Non-OAM traffic is always accepted.
|
- Non-|OAM| traffic is always accepted.
|
||||||
|
|
||||||
- Egress traffic is always accepted.
|
- Egress traffic is always accepted.
|
||||||
|
|
||||||
- |SM| traffic is always accepted.
|
- |SM| traffic is always accepted.
|
||||||
|
|
||||||
- SSH traffic is always accepted.
|
- |SSH| traffic is always accepted.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
It is recommended to disable port 80 when HTTPS is enabled for external
|
It is recommended to disable port 80 when HTTPS is enabled for external
|
||||||
@@ -35,7 +35,7 @@ Operational complexity:
|
|||||||
|
|
||||||
.. _firewall-options-ul-hjq-k1g-mmb:
|
.. _firewall-options-ul-hjq-k1g-mmb:
|
||||||
|
|
||||||
- |prod| provides OAM firewall rules through Kubernetes Network Policies.
|
- |prod| provides |OAM| firewall rules through Kubernetes Network Policies.
|
||||||
For more information, see :ref:`Firewall Options
|
For more information, see :ref:`Firewall Options
|
||||||
<security-firewall-options>`.
|
<security-firewall-options>`.
|
||||||
|
|
||||||
@@ -47,9 +47,9 @@ Operational complexity:
|
|||||||
Default Firewall Rules
|
Default Firewall Rules
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|prod| applies these default firewall rules on the OAM network. The default
|
|prod| applies these default firewall rules on the |OAM| network. The default
|
||||||
rules are recommended for most applications.
|
rules are recommended for most applications.
|
||||||
|
|
||||||
For a complete listing, see :ref:`Default Firewall Rules
|
For a complete listings, see :ref:`Default Firewall Rules
|
||||||
<security-default-firewall-rules>`.
|
<security-default-firewall-rules>`.
|
||||||
|
|
||||||
|
@@ -141,6 +141,9 @@ configuration is required in order to use :command:`helm`.
|
|||||||
:ref:`Configure Container-backed Remote CLIs and Clients
|
:ref:`Configure Container-backed Remote CLIs and Clients
|
||||||
<security-configure-container-backed-remote-clis-and-clients>`
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
|
:ref:`Using Container-backed Remote CLIs and Clients
|
||||||
|
<using-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
:ref:`Configure Remote Helm Client for Non-Admin Users
|
:ref:`Configure Remote Helm Client for Non-Admin Users
|
||||||
<configure-remote-helm-client-for-non-admin-users>`
|
<configure-remote-helm-client-for-non-admin-users>`
|
||||||
|
|
||||||
|
@@ -10,42 +10,42 @@ The local docker registry provides secure HTTPS access using the registry API.
|
|||||||
|
|
||||||
.. rubric:: |context|
|
.. rubric:: |context|
|
||||||
|
|
||||||
By default a self-signed certificate is generated at installation time for
|
By default a self-signed certificate is generated at installation time for the
|
||||||
the registry API. For more secure access, a Root |CA|-signed certificate is
|
registry API. For more secure access, an intermediate or Root |CA|-signed
|
||||||
strongly recommended.
|
certificate is strongly recommended.
|
||||||
|
|
||||||
The Root |CA|-signed certificate for the registry must have at least the
|
The intermediate or Root |CA|-signed certificate for the registry must have at
|
||||||
following |SANs|: DNS:registry.local, DNS:registry.central, IP
|
least the following |SANs|: DNS:registry.local, DNS:registry.central, IP
|
||||||
Address:<oam-floating-ip-address>, IP Address:<mgmt-floating-ip-address>.
|
Address:<oam-floating-ip-address>, IP Address:<mgmt-floating-ip-address>. Use
|
||||||
Use the :command:`system addrpool-list` command to get the |OAM| floating IP
|
the :command:`system addrpool-list` command to get the |OAM| floating IP
|
||||||
Address and management floating IP Address for your system. You can add any
|
Address and management floating IP Address for your system. You can add any
|
||||||
additional DNS entry\(s\) that you have set up for your |OAM| floating IP
|
additional DNS entry\(s\) that you have set up for your |OAM| floating IP
|
||||||
Address.
|
Address.
|
||||||
|
|
||||||
Use the following procedure to install a Root |CA|-signed certificate to either
|
Use the following procedure to install an intermediate or Root |CA|-signed
|
||||||
replace the default self-signed certificate or to replace an expired or soon
|
certificate to either replace the default self-signed certificate or to replace
|
||||||
to expire certificate.
|
an expired or soon to expire certificate.
|
||||||
|
|
||||||
.. rubric:: |prereq|
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
Obtain a Root |CA|-signed certificate and key from a trusted Root |CA|. Refer
|
Obtain an intermediate or Root |CA|-signed certificate and key from a trusted
|
||||||
to the documentation for the external Root |CA| that you are using, on how to
|
intermediate or Root |CA|. Refer to the documentation for the external Root
|
||||||
create public certificate and private key pairs, signed by a Root |CA|, for
|
|CA| that you are using, on how to create public certificate and private key
|
||||||
HTTPS.
|
pairs, signed by an intermediate or Root |CA|, for HTTPS.
|
||||||
|
|
||||||
For lab purposes, see Appendix A for how to create a test Root |CA|
|
For lab purposes, see Appendix A for how to create a test intermediate or Root
|
||||||
certificate and key, and use it to sign test certificates.
|
|CA| certificate and key, and use it to sign test certificates.
|
||||||
|
|
||||||
Put the |PEM| encoded versions of the certificate and key in a single file,
|
Put the |PEM| encoded versions of the certificate and key in a single file,
|
||||||
and copy the file to the controller host.
|
and copy the file to the controller host.
|
||||||
|
|
||||||
Also, obtain the certificate of the Root |CA| that signed the above
|
Also, obtain the certificate of the intermediate or Root |CA| that signed the
|
||||||
certificate.
|
above certificate.
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
|
||||||
.. _security-install-update-the-docker-registry-certificate-d516e68:
|
.. _security-install-update-the-docker-registry-certificate-d527e71:
|
||||||
|
|
||||||
#. In order to enable internal use of the docker registry certificate,
|
#. In order to enable internal use of the docker registry certificate,
|
||||||
update the trusted |CA| list for this system with the Root |CA| associated
|
update the trusted |CA| list for this system with the Root |CA| associated
|
||||||
@@ -53,14 +53,15 @@ certificate.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install --mode ssl_ca
|
~(keystone_admin)]$ system certificate-install --mode ssl_ca
|
||||||
<pathTocertificate>
|
<pathTocertificate>
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
**<pathTocertificate>**
|
**<pathTocertificate>**
|
||||||
is the path to the Root |CA| certificate associated with the docker
|
is the path to the intermediate or Root |CA| certificate associated
|
||||||
registry Root |CA|-signed certificate.
|
with the docker registry's intermediate or Root |CA|-signed
|
||||||
|
certificate.
|
||||||
|
|
||||||
#. Update the docker registry certificate using the
|
#. Update the docker registry certificate using the
|
||||||
:command:`certificate-install` command.
|
:command:`certificate-install` command.
|
||||||
@@ -69,13 +70,13 @@ certificate.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)$ system certificate-install --mode docker_registry
|
~(keystone_admin)]$ system certificate-install --mode docker_registry
|
||||||
<pathTocertificateAndKey>
|
<pathTocertificateAndKey>
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
**<pathTocertificateAndKey>**
|
**<pathTocertificateAndKey>**
|
||||||
is the path to the file containing both the docker registry
|
is the path to the file containing both the docker registry's
|
||||||
certificate and private key to install.
|
intermediate or Root CA-signed certificate and private key to install.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
.. fqa1607640080245
|
||||||
|
.. _starlingx-openstack-kubernetes-from-stsadmin-account-login:
|
||||||
|
|
||||||
|
=============================================================================================
|
||||||
|
For StarlingX, Platform OpenStack and Kubernetes CLIs from the 'sysadmin' Linux Account Login
|
||||||
|
=============================================================================================
|
||||||
|
|
||||||
|
You can establish credentials for StarlingX, Platform OpenStack and Kubernetes
|
||||||
|
|CLIs| from the 'sysadmin' Linux account login.
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
For the 'sysadmin' account, you can acquire both Keystone admin credentials for
|
||||||
|
StarlingX and Platform |CLIs|, and Kubernetes admin credentials for Kubernetes
|
||||||
|
|CLIs| by executing the following command:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
user1@controller-0:~$ source /etc/platform/openrc
|
||||||
|
|
@@ -13,25 +13,19 @@ StarlingX\) and the |prod| web administration server.
|
|||||||
By default HTTPS access to StarlingX REST and Web Server's endpoints are
|
By default HTTPS access to StarlingX REST and Web Server's endpoints are
|
||||||
disabled; i.e. accessible via HTTP only.
|
disabled; i.e. accessible via HTTP only.
|
||||||
|
|
||||||
For secure HTTPS access, an x509 certificate and key is required.
|
For secure HTTPS access, an x509 certificate and key is required. When HTTPS is
|
||||||
|
enabled for the first time on a |prod| system, a self-signed certificate and
|
||||||
|
key are automatically generated and installed for the StarlingX REST and Web
|
||||||
|
Server endpoints.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
The default HTTPS X.509 certificates that are used by |prod-long| for
|
Refer to the documentation for the external Intermediate or Root |CA| that
|
||||||
authentication are not signed by a known authority. For increased
|
you are using, on how to create public certificate and private key pairs,
|
||||||
security, obtain, install, and use certificates that have been signed
|
signed by an Intermediate or Root |CA|, for HTTPS.
|
||||||
by a Root certificate authority. Refer to the documentation for the
|
|
||||||
external Root |CA| that you are using, on how to create public
|
|
||||||
certificate and private key pairs, signed by a Root |CA|, for HTTPS.
|
|
||||||
|
|
||||||
By default a self-signed certificate and key is generated and installed by
|
For secure remote access, an intermediate or Root |CA|-signed certificate and
|
||||||
|prod| for the StarlingX REST and Web Server endpoints for evaluation
|
key are required. The use of a Root |CA|-signed certificate is strongly
|
||||||
purposes. This certificate and key is installed by default when HTTPS
|
recommended.
|
||||||
access is first enabled for these services. In order to connect, remote
|
|
||||||
clients must be configured to accept the self-signed certificate without
|
|
||||||
verifying it \("insecure" mode\).
|
|
||||||
|
|
||||||
For secure remote access, a Root |CA|-signed certificate and key are
|
|
||||||
required. The use of a Root |CA|-signed certificate is strongly recommended.
|
|
||||||
|
|
||||||
You can update the certificate used for HTTPS access at any time.
|
You can update the certificate used for HTTPS access at any time.
|
||||||
|
|
||||||
|
@@ -12,7 +12,7 @@ The following rules apply to all System Accounts \(Local LDAP, sysadmin,
|
|||||||
other Linux Accounts, and Keystone accounts\):
|
other Linux Accounts, and Keystone accounts\):
|
||||||
|
|
||||||
|
|
||||||
.. _starlingx-system-accounts-system-account-password-rules-ul-jwb-g15-zw:
|
.. _starlingx-system-accounts-system-account-password-rules-ul-evs-dsn-ynb:
|
||||||
|
|
||||||
- The password must be at least seven characters long.
|
- The password must be at least seven characters long.
|
||||||
|
|
||||||
@@ -34,6 +34,8 @@ other Linux Accounts, and Keystone accounts\):
|
|||||||
The following additional rules apply to Local Linux accounts only \(Local
|
The following additional rules apply to Local Linux accounts only \(Local
|
||||||
LDAP, sysadmin, and other Linux accounts\):
|
LDAP, sysadmin, and other Linux accounts\):
|
||||||
|
|
||||||
|
.. _starlingx-system-accounts-system-account-password-rules-ul-rvj-jsn-ynb:
|
||||||
|
|
||||||
- Dictionary words or simple number sequences \(for example, 123 or 321\)
|
- Dictionary words or simple number sequences \(for example, 123 or 321\)
|
||||||
are not allowed
|
are not allowed
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@ The sysadmin Account
|
|||||||
This is a local, per-host, sudo-enabled account created automatically when a
|
This is a local, per-host, sudo-enabled account created automatically when a
|
||||||
new host is provisioned.
|
new host is provisioned.
|
||||||
|
|
||||||
This Linux user account is used by the system administrator as it has
|
This Linux user account is used by the primary system administrator as it has
|
||||||
extended privileges.
|
extended privileges.
|
||||||
|
|
||||||
On controller nodes, this account is available even before :command:`ansible
|
On controller nodes, this account is available even before :command:`ansible
|
||||||
|
25
doc/source/security/kubernetes/types-of-system-accounts.rst
Normal file
25
doc/source/security/kubernetes/types-of-system-accounts.rst
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
.. ihc1607982648629
|
||||||
|
.. _types-of-system-accounts:
|
||||||
|
|
||||||
|
========================
|
||||||
|
Types of System Accounts
|
||||||
|
========================
|
||||||
|
|
||||||
|
This Chapter describes the system accounts available in a |prod|
|
||||||
|
system.
|
||||||
|
|
||||||
|
For more information, see:
|
||||||
|
|
||||||
|
.. _types-of-system-accounts-ul-rms-mwk-znb:
|
||||||
|
|
||||||
|
- :ref:`Linux User Accounts <overview-of-system-accounts>`
|
||||||
|
|
||||||
|
- :ref:`Kubernetes Service Accounts <kube-service-account>`
|
||||||
|
|
||||||
|
- :ref:`Keystone Accounts <keystone-accounts>`
|
||||||
|
|
||||||
|
- :ref:`Remote Windows Active Directory Accounts <remote-windows-active-directory-accounts>`
|
||||||
|
|
||||||
|
- :ref:`Linux User Accounts <overview-of-system-accounts>`
|
||||||
|
|
@@ -27,6 +27,6 @@ Operational complexity:
|
|||||||
|
|
||||||
- This must be done for each node before starting the installation.
|
- This must be done for each node before starting the installation.
|
||||||
|
|
||||||
For more information, see :ref:`UEFI Secure Boot
|
For more information, see the section :ref:`UEFI Secure Boot
|
||||||
<overview-of-uefi-secure-boot>`.
|
<overview-of-uefi-secure-boot>`.
|
||||||
|
|
||||||
|
@@ -0,0 +1,158 @@
|
|||||||
|
|
||||||
|
.. sso1605707703320
|
||||||
|
.. _using-container-backed-remote-clis-and-clients:
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Use Container-backed Remote CLIs and Clients
|
||||||
|
============================================
|
||||||
|
|
||||||
|
Remote platform |CLIs| can be used in any shell after sourcing the generated
|
||||||
|
remote CLI/client RC file. This RC file sets up the required environment
|
||||||
|
variables and aliases for the remote |CLI| commands.
|
||||||
|
|
||||||
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
|
.. _using-container-backed-remote-clis-and-clients-ul-vcd-4rf-14b:
|
||||||
|
|
||||||
|
- Consider adding the following command to your .login or shell rc file, such
|
||||||
|
that your shells will automatically be initialized with the environment
|
||||||
|
variables and aliases for the remote |CLI| commands. Otherwise, execute it
|
||||||
|
before proceeding:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
root@myclient:/home/user/remote_cli_wd# source remote_client_platform.sh
|
||||||
|
|
||||||
|
- You must have completed the configuration steps described in
|
||||||
|
:ref:`Configuring Container-backed Remote CLIs and Clients
|
||||||
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
|
before proceeding.
|
||||||
|
|
||||||
|
- If you specified repositories that require authentication when configuring
|
||||||
|
the container-backed remote |CLIs|, you must perform a :command:`docker
|
||||||
|
login` to that repository before using remote |CLIs| for the first time
|
||||||
|
|
||||||
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
- For simple StarlingX :command:`system` |CLI| and Kubernetes
|
||||||
|
:command:`kubectl` |CLI| commands:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The first usage of a remote |CLI| command will be slow as it requires
|
||||||
|
that the docker image supporting the remote CLIs/clients be pulled from
|
||||||
|
the remote registry.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
Please enter your OpenStack Password for project admin as user admin:
|
||||||
|
root@myclient:/home/user/remote_cli_wd# system host-list
|
||||||
|
+----+--------------+-------------+----------------+-------------+--------------+
|
||||||
|
| id | hostname | personality | administrative | operational | availability |
|
||||||
|
+----+--------------+-------------+----------------+-------------+--------------+
|
||||||
|
| 1 | controller-0 | controller | unlocked | enabled | available |
|
||||||
|
| 2 | controller-1 | controller | unlocked | enabled | available |
|
||||||
|
| 3 | compute-0 | worker | unlocked | enabled | available |
|
||||||
|
| 4 | compute-1 | worker | unlocked | enabled | available |
|
||||||
|
+----+--------------+-------------+----------------+-------------+--------------+
|
||||||
|
root@myclient:/home/user/remote_cli_wd# kubectl -n kube-system get pods
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
calico-kube-controllers-767467f9cf-wtvmr 1/1 Running 1 3d2h
|
||||||
|
calico-node-j544l 1/1 Running 1 3d
|
||||||
|
calico-node-ngmxt 1/1 Running 1 3d1h
|
||||||
|
calico-node-qtc99 1/1 Running 1 3d
|
||||||
|
calico-node-x7btl 1/1 Running 4 3d2h
|
||||||
|
ceph-pools-audit-1569848400-rrpjq 0/1 Completed 0 12m
|
||||||
|
ceph-pools-audit-1569848700-jhv5n 0/1 Completed 0 7m26s
|
||||||
|
ceph-pools-audit-1569849000-cb988 0/1 Completed 0 2m25s
|
||||||
|
coredns-7cf476b5c8-5x724 1/1 Running 1 3d2h
|
||||||
|
...
|
||||||
|
root@myclient:/home/user/remote_cli_wd#
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Some |CLI| commands are designed to leave you in a shell prompt, for example:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
root@myclient:/home/user/remote_cli_wd# openstack
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
root@myclient:/home/user/remote_cli_wd# kubectl exec -ti <pod_name> -- /bin/bash
|
||||||
|
|
||||||
|
In most cases, the remote |CLI| will detect and handle these commands
|
||||||
|
correctly. If you encounter cases that are not handled correctly, you
|
||||||
|
can force-enable or disable the shell options using the <FORCE\_SHELL>
|
||||||
|
or <FORCE\_NO\_SHELL> variables before the command.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
root@myclient:/home/user/remote_cli_wd# FORCE_SHELL=true kubectl exec -ti <pod_name> -- /bin/bash
|
||||||
|
root@myclient:/home/user/remote_cli_wd# FORCE_NO_SHELL=true kubectl exec <pod_name> -- ls
|
||||||
|
|
||||||
|
You cannot use both variables at the same time.
|
||||||
|
|
||||||
|
- If you need to run a remote |CLI| command that references a local file,
|
||||||
|
then that file must be copied to or created in the working directory
|
||||||
|
specified in the -w option on the ./config\_client.sh command.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
root@myclient:/home/user# cp /<someDir>/test.yml $HOME/remote_cli_wd/test.yml
|
||||||
|
root@myclient:/home/user# cd $HOME/remote_cli_wd
|
||||||
|
root@myclient:/home/user/remote_cli_wd# kubectl -n kube-system create -f test.yml
|
||||||
|
pod/test-pod created
|
||||||
|
root@myclient:/home/user/remote_cli_wd# kubectl -n kube-system delete -f test.yml
|
||||||
|
pod/test-pod deleted
|
||||||
|
|
||||||
|
- Do the following to use helm.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
For non-admin users, additional configuration is required first as
|
||||||
|
discussed in :ref:`Configuring Remote Helm Client for Non-Admin Users
|
||||||
|
<configure-remote-helm-client-for-non-admin-users>`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When using helm, any command that requires access to a helm repository
|
||||||
|
\(managed locally\) will require that you be in the
|
||||||
|
$HOME/remote\_cli\_wd directory and use the --home ./.helm option.
|
||||||
|
|
||||||
|
|
||||||
|
#. Do the initial setup of the helm client.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This command assumes you are using Helm v2.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
% cd $HOME/remote_cli_wd
|
||||||
|
% helm init --client-only --home "./.helm"
|
||||||
|
|
||||||
|
#. Run a helm command.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
% cd $HOME/remote_cli_wd
|
||||||
|
% helm list
|
||||||
|
% helm install --name wordpress stable/wordpress --home "./.helm"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Related information**
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
:ref:`Configuring Container-backed Remote CLIs and Clients
|
||||||
|
<security-configure-container-backed-remote-clis-and-clients>`
|
||||||
|
|
||||||
|
:ref:`Installing Kubectl and Helm Clients Directly on a Host
|
||||||
|
<security-install-kubectl-and-helm-clients-directly-on-a-host>`
|
||||||
|
|
||||||
|
:ref:`Configuring Remote Helm Client for Non-Admin Users
|
||||||
|
<configure-remote-helm-client-for-non-admin-users>`
|
||||||
|
|
@@ -12,6 +12,6 @@ out after 50 minutes \(the Keystone Token Expiry time\), regardless of activity.
|
|||||||
Operational complexity: No additional configuration is required.
|
Operational complexity: No additional configuration is required.
|
||||||
|
|
||||||
You can also block user access after a set number of failed login attempts as
|
You can also block user access after a set number of failed login attempts as
|
||||||
described in :ref:`Configure Horizon User Lockout on Failed Logins
|
described in see :ref:`Configure Horizon User Lockout on Failed Logins
|
||||||
<configure-horizon-user-lockout-on-failed-logins>`.
|
<configure-horizon-user-lockout-on-failed-logins>`.
|
||||||
|
|
||||||
|
@@ -133,4 +133,4 @@
|
|||||||
.. |VXLAN| replace:: :abbr:`VXLAN (Virtual eXtensible Local Area Network)`
|
.. |VXLAN| replace:: :abbr:`VXLAN (Virtual eXtensible Local Area Network)`
|
||||||
.. |VXLANs| replace:: :abbr:`VXLANs (Virtual eXtensible Local Area Networks)`
|
.. |VXLANs| replace:: :abbr:`VXLANs (Virtual eXtensible Local Area Networks)`
|
||||||
.. |XML| replace:: :abbr:`XML (eXtensible Markup Language)`
|
.. |XML| replace:: :abbr:`XML (eXtensible Markup Language)`
|
||||||
.. |YAML| replace:: :abbr:`YAML (YAML Ain't Markup Language)`
|
.. |YAML| replace:: :abbr:`YAML (YAML Ain't Markup Language)`
|
||||||
|
@@ -58,7 +58,7 @@ You will need the following information from your |prod| administrator:
|
|||||||
% sudo apt-get update
|
% sudo apt-get update
|
||||||
% sudo apt-get install -y kubectl
|
% sudo apt-get install -y kubectl
|
||||||
|
|
||||||
.. _security-installing-kubectl-and-helm-clients-directly-on-a-host-local-configuration-context:
|
.. _security-install-kubectl-and-helm-clients-directly-on-a-host-local-configuration-context:
|
||||||
|
|
||||||
#. Set up the local configuration and context.
|
#. Set up the local configuration and context.
|
||||||
|
|
||||||
|
@@ -118,10 +118,10 @@ Helm
|
|||||||
|
|
||||||
Do the following to use helm.
|
Do the following to use helm.
|
||||||
|
|
||||||
.. xreflink .. note::
|
.. note::
|
||||||
For non-admin users, additional configuration is required first as
|
For non-admin users, additional configuration is required first as
|
||||||
discussed in |sec-doc|: :ref:`Configuring Remote Helm Client for
|
discussed in |sec-doc|: :ref:`Configuring Remote Helm Client for
|
||||||
Non-Admin Users <configuring-remote-helm-client-for-non-admin-users>`.
|
Non-Admin Users <configure-remote-helm-client-for-non-admin-users>`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
When using helm, any command that requires access to a helm repository
|
When using helm, any command that requires access to a helm repository
|
||||||
|
Reference in New Issue
Block a user