Ceph: Config Overides

This PS provides the same level of configuration tuneability and control to
the ceph chart as other charts within openstack-helm.

Change-Id: I620c3fdb31abe67ee5b4b4766b1523e02bb7f814
This commit is contained in:
Pete Birley 2017-09-06 09:25:27 -05:00
parent ff94785f81
commit c6a288d269
14 changed files with 37 additions and 139 deletions

View File

@ -18,5 +18,7 @@ limitations under the License.
set -ex
kubectl delete secret ${PVC_CEPH_STORAGECLASS_USER_SECRET_NAME} \
--namespace ${DEPLOYMENT_NAMESPACE} --ignore-not-found=true
kubectl delete secret \
--namespace ${DEPLOYMENT_NAMESPACE} \
--ignore-not-found=true \
${PVC_CEPH_STORAGECLASS_USER_SECRET_NAME}

View File

@ -83,52 +83,3 @@ function get_osd_path {
function extract_param {
echo "${1##*=}"
}
for option in $(comma_to_space ${DEBUG}); do
case $option in
verbose)
echo "VERBOSE: activating bash debugging mode."
set -x
;;
fstree*)
echo "FSTREE: uncompressing content of $(extract_param $option)"
# NOTE (leseb): the entrypoint should already be running from /
# This is just a safeguard
pushd / > /dev/null
# Downloading patched filesystem
curl --silent --output patch.tar -L $(extract_param $option)
# If the file isn't present, let's stop here
[ -f patch.tar ]
# Let's find out if the tarball has the / in a sub-directory
strip_level=0
for sub_level in $(seq 2 -1 0); do
tar -tf patch.tar | cut -d "/" -f $((sub_level+1)) | egrep -sqw "bin|etc|lib|lib64|opt|run|usr|sbin|var" && strip_level=$sub_level || true
done
echo "The main directory is at level $strip_level"
echo ""
echo "SHA1 of the archive is: $(sha1sum patch.tar)"
echo ""
echo "Now, we print the SHA1 of each file."
for f in $(tar xfpv patch.tar --show-transformed-names --strip=$strip_level); do
if [[ ! -d $f ]]; then
sha1sum $f
fi
done
rm -f patch.tar
popd > /dev/null
;;
stayalive)
echo "STAYALIVE: container will not die if a command fails."
source docker_exec.sh
;;
*)
echo "$option is not a valid debug option."
echo "Available options are: verbose,fstree and stayalive."
echo "They can be used altogether like this: '-e DEBUG=verbose,fstree=http://myfstree,stayalive"
exit 1
;;
esac
done

View File

@ -47,8 +47,11 @@ function osd_disk_prepare {
if [[ ${OSD_BLUESTORE} -eq 1 ]]; then
ceph-disk -v prepare ${CLI_OPTS} --bluestore ${OSD_DEVICE}
elif [[ ${OSD_DMCRYPT} -eq 1 ]]; then
check_admin_key
# the admin key must be present on the node
if [[ ! -e $ADMIN_KEYRING ]]; then
log "ERROR- $ADMIN_KEYRING must exist; get it from your existing mon"
exit 1
fi
# in order to store the encrypted key in the monitor's k/v store
ceph-disk -v prepare ${CLI_OPTS} --journal-uuid ${OSD_JOURNAL_UUID} --lockbox-uuid ${OSD_LOCKBOX_UUID} --dmcrypt ${OSD_DEVICE} ${OSD_JOURNAL}
echo "Unmounting LOCKBOX directory"

View File

@ -13,8 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}
---
{{- $envAll := . }}
---
apiVersion: v1
kind: ConfigMap
metadata:

View File

@ -14,12 +14,27 @@ See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- $envAll := . }}
{{- if empty .Values.conf.ceph.config.global.mon_host -}}
{{- $monHost := tuple "ceph_mon" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
{{- $monHostDomain := default .Release.Namespace .Values.ceph.namespace }}
{{- $monHostURI := cat $monHost "." $monHostDomain | nospace -}}
{{- $monHostURI | set .Values.conf.ceph.config.global "mon_host" | quote | trunc 0 -}}
{{- $monHostURI | set .Values.conf.ceph.config.global "mon_host" | quote | trunc 0 -}}
{{- end -}}
{{- if empty .Values.conf.ceph.config.global.fsid -}}
{{- uuidv4 | set .Values.conf.ceph.config.global "fsid" | quote | trunc 0 -}}
{{- end -}}
{{- if empty .Values.conf.ceph.config.osd.cluster_network -}}
{{- .Values.network.cluster | set .Values.conf.ceph.config.osd "cluster_network" | quote | trunc 0 -}}
{{- end -}}
{{- if empty .Values.conf.ceph.config.osd.public_network -}}
{{- .Values.network.public | set .Values.conf.ceph.config.osd "public_network" | quote | trunc 0 -}}
{{- end -}}
---
apiVersion: v1
kind: ConfigMap
@ -27,4 +42,4 @@ metadata:
name: ceph-etc
data:
ceph.conf: |+
{{ tuple "etc/_ceph.conf.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
{{ include "helm-toolkit.utils.to_ini" .Values.conf.ceph.config | indent 4 }}

View File

@ -13,7 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- if .Values.manifests_enabled.storage_secrets }}
{{- $envAll := . }}
---
apiVersion: v1
kind: ConfigMap

View File

@ -15,9 +15,10 @@ limitations under the License.
*/}}
{{- if .Values.manifests_enabled.deployment }}
{{- if .Values.ceph.enabled.mds }}
{{- $envAll := . }}
{{- if .Values.ceph.enabled.mds }}
{{- $dependencies := .Values.dependencies.mds }}
---
kind: Deployment
apiVersion: apps/v1beta1
metadata:

View File

@ -1,78 +0,0 @@
[global]
fsid = {{ uuidv4 | default .Values.conf.ceph.config.global.uuid | quote }}
cephx = {{ .Values.conf.ceph.config.global.cephx | default "true" | quote }}
cephx_require_signatures = {{ .Values.conf.ceph.config.global.cephx_require_signatures | default "false" | quote }}
cephx_cluster_require_signatures = {{ .Values.conf.ceph.config.global.cephx_cluster_require_signatures | default "true" | quote }}
cephx_service_require_signatures = {{ .Values.conf.ceph.config.global.cephx_service_require_signatures | default "false" | quote }}
# auth
max_open_files = {{ .Values.conf.ceph.config.global.max_open_files | default "131072" | quote }}
osd_pool_default_pg_num = {{ .Values.conf.ceph.config.global.osd_pool_default_pg_num | default "128" | quote }}
osd_pool_default_pgp_num = {{ .Values.conf.ceph.config.global.osd_pool_default_pgp_num | default "128" | quote }}
osd_pool_default_size = {{ .Values.conf.ceph.config.global.osd_pool_default_size | default "3" | quote }}
osd_pool_default_min_size = {{ .Values.conf.ceph.config.global.osd_pool_default_min_size | default "1" | quote }}
mon_osd_full_ratio = {{ .Values.conf.ceph.config.global.mon_osd_full_ratio | default ".95" | quote }}
mon_osd_nearfull_ratio = {{ .Values.conf.ceph.config.global.mon_osd_nearfull_ratio | default ".85" | quote }}
mon_host = {{ .Values.conf.ceph.config.global.mon_host | quote }}
rgw_thread_pool_size = {{ .Values.conf.ceph.config.global.rgw_thread_pool_size | default "1024" | quote }}
rgw_num_rados_handles = {{ .Values.conf.ceph.config.global.rgw_num_rados_handles | default "100" | quote }}
[mon]
mon_osd_down_out_interval = {{ .Values.conf.ceph.config.mon.mon_osd_down_out_interval | default "600" | quote }}
mon_osd_min_down_reporters = {{ .Values.conf.ceph.config.mon.mon_osd_min_down_reporters | default "4" | quote }}
mon_clock_drift_allowed = {{ .Values.conf.ceph.config.mon.mon_clock_drift_allowed | default "0.15" | quote }}
mon_clock_drift_warn_backoff = {{ .Values.conf.ceph.config.mon.mon_clock_drift_warn_backoff | default "30" | quote }}
mon_osd_report_timeout = {{ .Values.conf.ceph.config.mon.mon_osd_report_timeout | default "300" | quote }}
[osd]
# network
cluster_network = {{ .Values.network.cluster | default "192.168.0.0/16" | quote }}
public_network = {{ .Values.network.public | default "192.168.0.0/16" | quote }}
osd_mon_heartbeat_interval = {{ .Values.conf.ceph.config.osd.osd_mon_heartbeat_interval | default "30" | quote }}
# ports
ms_bind_port_min = {{ .Values.conf.ceph.config.osd.ms_bind_port_min | default "6800" | quote }}
ms_bind_port_max = {{ .Values.conf.ceph.config.osd.ms_bind_port_max | default "7100" | quote }}
# journal
journal_size = {{ .Values.conf.ceph.config.osd.journal_size | default "100" | quote }}
# filesystem
osd_mkfs_type = {{ .Values.conf.ceph.config.osd.osd_mkfs_type | default "xfs" | quote }}
osd_mkfs_options_xfs = {{ .Values.conf.ceph.config.osd.osd_mkfs_options_xfs | default "-f -i size=2048" | quote }}
osd_max_object_name_len = {{ .Values.conf.ceph.config.osd.osd_max_object_name_len | default "256" | quote }}
# crush
osd_pool_default_crush_rule = {{ .Values.conf.ceph.config.osd.osd_pool_default_crush_rule | default "0" | quote }}
osd_crush_update_on_start = {{ .Values.conf.ceph.config.osd.osd_crush_update_on_start | default "true" | quote }}
osd_crush_chooseleaf_type = {{ .Values.conf.ceph.config.osd.osd_crush_chooseleaf_type | default "1" | quote }}
# backend
osd_objectstore = {{ .Values.conf.ceph.config.osd.osd_objectstore | default "filestore" | quote }}
# performance tuning
filestore_merge_threshold = {{ .Values.conf.ceph.config.osd.filestore_merge_threshold | default "40" | quote }}
filestore_split_multiple = {{ .Values.conf.ceph.config.osd.filestore_split_multiple | default "8" | quote }}
osd_op_threads = {{ .Values.conf.ceph.config.osd.osd_op_threads | default "8" | quote }}
filestore_op_threads = {{ .Values.conf.ceph.config.osd.filestore_op_threads | default "8" | quote }}
filestore_max_sync_interval = {{ .Values.conf.ceph.config.osd.filestore_max_sync_interval | default "5" | quote }}
osd_max_scrubs = {{ .Values.conf.ceph.config.osd.osd_max_scrubs | default "1" | quote }}
# recovery tuning
osd_recovery_max_active = {{ .Values.conf.ceph.config.osd.osd_recovery_max_active | default "5" | quote }}
osd_max_backfills = {{ .Values.conf.ceph.config.osd.osd_max_backfills | default "2" | quote }}
osd_recovery_op_priority = {{ .Values.conf.ceph.config.osd.osd_recovery_op_priority | default "2" | quote }}
osd_client_op_priority = {{ .Values.conf.ceph.config.osd.osd_client_op_priority | default "63" | quote }}
osd_recovery_max_chunk = {{ .Values.conf.ceph.config.osd.osd_client_op_priority | default "osd_recovery_max_chunk" | quote }}
osd_recovery_threads = {{ .Values.conf.ceph.config.osd.osd_recovery_threads | default "1" | quote }}
[client]
rbd_cache_enabled = {{ .Values.conf.ceph.config.client.rbd_cache_enabled | default "true" | quote }}
rbd_cache_writethrough_until_flush = {{ .Values.conf.ceph.config.client.rbd_cache_writethrough_until_flush | default "true" | quote }}
rbd_default_features = {{ .Values.conf.ceph.config.client.rbd_default_features | default "1" | quote }}
[mds]
mds_cache_size = {{ .Values.conf.ceph.config.client.mds_mds_cache_size | default "100000" | quote }}

View File

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- $envAll := . }}
{{- if .Values.manifests_enabled.storage_secrets }}
{{- $envAll := . }}
{{- range $key1, $cephBootstrapKey := tuple "mds" "osd" "rgw" "mon" }}
{{- $jobName := print $cephBootstrapKey "-keyring-generator" }}
---

View File

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- $envAll := . }}
{{- if .Values.manifests_enabled.client_secrets }}
{{- $envAll := . }}
---
apiVersion: batch/v1
kind: Job

View File

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- $envAll := . }}
{{- if .Values.manifests_enabled.client_secrets }}
{{- $envAll := . }}
---
apiVersion: batch/v1
kind: Job

View File

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- $envAll := . }}
{{- if .Values.manifests_enabled.storage_secrets }}
{{- $envAll := . }}
---
apiVersion: batch/v1
kind: Job

View File

@ -15,8 +15,8 @@ limitations under the License.
*/}}
{{- if .Values.manifests_enabled.deployment }}
{{- if .Values.ceph.enabled.rgw }}
{{- $envAll := . }}
{{- if .Values.ceph.enabled.rgw }}
---
apiVersion: v1
kind: Service

View File

@ -15,6 +15,7 @@ limitations under the License.
*/}}
{{- if .Values.manifests_enabled.deployment }}
{{- $envAll := . }}
---
apiVersion: storage.k8s.io/v1
kind: StorageClass