Merge "additional cert store documentation"
[policy/parent.git] / docs / installation / oom.rst
1 .. This work is licensed under a
2 .. Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
4
5
6 Policy OOM Installation
7 -----------------------
8
9 .. contents::
10     :depth: 2
11
12 Policy OOM Charts
13 *****************
14 The policy K8S charts are located in the `OOM repository <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/policy;h=78576c7a0d30cb87054e9776326cdde20986e6e3;hb=refs/heads/master>`_.
15
16 Please refer to the OOM documentation on how to install and deploy ONAP.
17
18 Policy Pods
19 ***********
20 To get a listing of the Policy Pods, run the following command:
21
22 .. code-block:: bash
23
24   kubectl get pods | grep policy
25
26   brmsgw                     ClusterIP   10.43.77.177    <none>        9989/TCP                              5d15h   app=brmsgw,release=dev-policy
27   drools                     ClusterIP   10.43.167.154   <none>        6969/TCP,9696/TCP                     5d15h   app=drools,release=dev-policy
28   nexus                      ClusterIP   10.43.239.92    <none>        8081/TCP                              5d15h   app=nexus,release=dev-policy
29   pap                        NodePort    10.43.207.229   <none>        8443:30219/TCP,9091:30218/TCP         5d15h   app=pap,release=dev-policy
30   pdp                        ClusterIP   None            <none>        8081/TCP                              5d15h   app=pdp,release=dev-policy
31   policy-apex-pdp            ClusterIP   10.43.226.0     <none>        6969/TCP                              5d15h   app=policy-apex-pdp,release=dev-policy
32   policy-api                 ClusterIP   10.43.102.56    <none>        6969/TCP                              5d15h   app=policy-api,release=dev-policy
33   policy-distribution        ClusterIP   10.43.4.211     <none>        6969/TCP                              5d15h   app=policy-distribution,release=dev-policy
34   policy-pap                 ClusterIP   10.43.175.164   <none>        6969/TCP                              5d15h   app=policy-pap,release=dev-policy
35   policy-xacml-pdp           ClusterIP   10.43.181.208   <none>        6969/TCP                              5d15h   app=policy-xacml-pdp,release=dev-policy
36   policydb                   ClusterIP   10.43.93.233    <none>        3306/TCP                              5d15h   app=policydb,release=dev-policy
37
38 Some of these pods are shared between the legacy components and the latest framework components, while others are not.
39
40 .. csv-table::
41    :header: "Policy Pod", "Latest Framework", "Legacy"
42    :widths: 15,10,10
43
44    "brmsgw", "", "yes"
45    "drools", "yes", "yes"
46    "nexus", "yes", "yes"
47    "pap", "", "yes"
48    "pdp", "", "yes"
49    "policy-apex-pdp", "yes", ""
50    "policy-api", "yes", ""
51    "policy-distribution", "yes", "yes"
52    "policy-pap", "yes", ""
53    "policy-xacml-pdp", "yes", ""
54    "policydb", "yes", "yes"
55
56 Accessing Policy Containers
57 ***************************
58 Accessing the policy docker containers is the same as for any kubernetes container. Here is an example:
59
60 .. code-block:: bash
61
62   kubectl -n onap exec -it dev-policy-policy-xacml-pdp-584844b8cf-9zptx bash
63
64 Installing or Upgrading Policy
65 ******************************
66 The assumption is you have cloned the charts from the OOM repository into a local directory.
67
68 **Step 1** Go into local copy of OOM charts
69
70 From your local copy, edit any of the values.yaml files in the policy tree to make desired changes.
71
72 **Step 2** Build the charts
73
74 .. code-block:: bash
75
76   make policy
77   make onap
78
79 **Step 3** Undeploy Policy
80 After undeploying policy, loop on monitoring the policy pods until they go away.
81
82 .. code-block:: bash
83
84   helm del --purge dev-policy
85   kubectl get pods -n onap
86
87 **Step 4** Delete NFS persisted data for Policy
88 Sudo to root if you logged in using another account such as ubuntu.
89
90 .. code-block:: bash
91
92   rm -fr /dockerdata-nfs/dev-policy
93
94 **Step 5** Re-Deploy Policy pods
95 After deploying policy, loop on monitoring the policy pods until they come up.
96
97 .. code-block:: bash
98
99   helm deploy dev-policy local/onap --namespace onap
100   kubectl get pods -n onap
101
102 Restarting a faulty component
103 *****************************
104 Each policy component can be restarted independently by issuing the following command:
105
106 kubectl delete pod <policy-pod> -n onap
107
108 Exposing ports
109 **************
110 For security reasons, the ports for the policy containers are configured as ClusterIP and thus not exposed. If you find you need those ports in a development environment, then the following will expose them.
111
112 .. code-block:: bash
113
114   kubectl -n onap expose service policy-api --port=7171 --target-port=6969 --name=api-public --type=NodePort
115
116 Overriding certificate stores
117 *******************************
118 Policy components package default key and trust stores that support https based communication with other
119 AAF-enabled ONAP components.  Each store can be overridden at installation.
120
121 To override a default keystore, the new certificate store (policy-keystore) file should be placed at the
122 appropriate helm chart locations below:
123
124 * oom/kubernetes/policy/charts/drools/resources/secrets/policy-keystore drools pdp keystore override.
125 * oom/kubernetes/policy/charts/policy-apex-pdp/resources/config/policy-keystore apex pdp keystore override.
126 * oom/kubernetes/policy/charts/policy-api/resources/config/policy-keystore api keystore override.
127 * oom/kubernetes/policy/charts/policy-distribution/resources/config/policy-keystore distribution keystore override.
128 * oom/kubernetes/policy/charts/policy-pap/resources/config/policy-keystore pap keystore override.
129 * oom/kubernetes/policy/charts/policy-xacml-pdp/resources/config/policy-keystore xacml pdp keystore override.
130
131 In the event that the truststore (policy-truststore) needs to be overriden as well, place it at the appropriate
132 location below:
133
134 * oom/kubernetes/policy/charts/drools/resources/configmaps/policy-truststore drools pdp truststore override.
135 * oom/kubernetes/policy/charts/policy-apex-pdp/resources/config/policy-truststore apex pdp truststore override.
136 * oom/kubernetes/policy/charts/policy-api/resources/config/policy-truststore api truststore override.
137 * oom/kubernetes/policy/charts/policy-distribution/resources/config/policy-truststore distribution truststore override.
138 * oom/kubernetes/policy/charts/policy-pap/resources/config/policy-truststore pap truststore override.
139 * oom/kubernetes/policy/charts/policy-xacml-pdp/resources/config/policy-truststore xacml pdp truststore override.
140
141 When the keystore passwords are changed, the corresponding component configuration ([1]_) should also change:
142
143 * oom/kubernetes/policy/charts/drools/values.yaml
144 * oom/kubernetes/policy-apex-pdp/resources/config/config.json
145 * oom/kubernetes/policy-distribution/resources/config/config.json
146
147 This procedure is applicable to an installation that requires either AAF or non-AAF derived certificates.
148 The reader is refered to the AAF documentation when new AAF-compliant keystores are desired:
149
150 * `AAF automated configuration and Certificates <https://docs.onap.org/en/latest/submodules/aaf/authz.git/docs/sections/configuration/AAF_4.1_config.html#typical-onap-entity-info-in-aaf>`_.
151 * `AAF Certificate Management for Dummies <https://wiki.onap.org/display/DW/AAF+Certificate+Management+for+Dummies>`_.
152 * `Instructional Videos <https://wiki.onap.org/display/DW/Instructional+Videos>`_.
153
154 After these changes, follow the procedures in the :ref:`Installing or Upgrading Policy` section to make usage of
155 the new stores effective.
156
157 Additional PDP-D Customizations
158 *******************************
159
160 Credentials and other configuration parameters can be set as values
161 when deploying the policy (drools) subchart.  Please refer to
162 `PDP-D Default Values <https://git.onap.org/oom/tree/kubernetes/policy/charts/drools/values.yaml>`_
163 for the current default values.  It is strongly recommended that sensitive
164 information is secured appropriately before using in production.
165
166 Additional customization can be applied to the PDP-D.  Custom configuration goes under the
167 "resources" directory of the drools subchart (oom/kubernetes/policy/charts/drools/resources).
168 This requires rebuilding the policy subchart
169 (see section :ref:`Installing or Upgrading Policy`).
170
171 Configuration is done by adding or modifying configmaps and/or secrets.
172 Configmaps are placed under "drools/resources/configmaps", and
173 secrets under "drools/resources/secrets".
174
175 Custom configuration supportes these types of files:
176
177 * **\*.conf** files to support additional environment configuration.
178 * **features\*.zip** to add additional custom features.
179 * **\*.pre.sh** scripts to be executed before starting the PDP-D process.
180 * **\*.post.sh** scripts to be executed after starting the PDP-D process.
181 * **policy-keystore** to override the PDP-D policy-keystore.
182 * **policy-truststore** to override the PDP-D policy-truststore.
183 * **aaf-cadi.keyfile** to override the PDP-D AAF key.
184 * **\*.properties** to override or add properties files.
185 * **\*.xml** to override or add xml configuration files.
186 * **\*.json** to override json configuration files.
187 * **\*settings.xml** to override maven repositories configuration .
188
189 Examples
190 ^^^^^^^^
191
192 To *disable AAF*, simply override the "aaf.enabled" value when deploying the helm chart
193 (see the OOM installation instructions mentioned above).
194
195 To *override the PDP-D keystore or trustore*, add a suitable replacement(s) under
196 "drools/resources/secrets".  Modify the drools chart values.yaml with
197 new credentials, and follow the procedures described at
198 :ref:`Installing or Upgrading Policy` to redeploy the chart.
199
200 To *disable https* for the DMaaP configuration topic, add a copy of
201 `engine.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`_
202 with "dmaap.source.topics.PDPD-CONFIGURATION.https" set to "false", or alternatively
203 create a ".pre.sh" script (see above) that edits this file before the PDP-D is
204 started.
205
206 To use *noop topics* for standalone testing, add a "noop.pre.sh" script under
207 oom/kubernetes/policy/charts/drools/resources/configmaps/:
208
209 .. code-block:: bash
210
211     #!/bin/bash
212     sed -i "s/^dmaap/noop/g" $POLICY_HOME/config/*.properties
213
214
215 .. rubric:: Footnotes
216
217 .. [1] There is a limitation that store passwords are not configurable for policy-api, policy-pap, and policy-xacml-pdp.