diff --git a/dockerfiles/heat-container-agent/Dockerfile b/dockerfiles/heat-container-agent/Dockerfile index 599a0e03bdc4e52a37b1a3ee884cdbcb58c2c46c..b48696f6365f24796899330a4a4a4f6ed4661a2e 100644 --- a/dockerfiles/heat-container-agent/Dockerfile +++ b/dockerfiles/heat-container-agent/Dockerfile @@ -15,6 +15,7 @@ RUN dnf -y --setopt=tsflags=nodocs --nogpgcheck install \ bash \ findutils \ gcc \ + gettext \ kubernetes-client \ libffi-devel \ openssh-clients \ diff --git a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh index 083554e30a68d102523e60d7070b2622060dada8..4f6e5ae071384945b2d185cff22556b5da6c651e 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh @@ -156,6 +156,7 @@ NVIDIA_GPU_ENABLED="$NVIDIA_GPU_ENABLED" NVIDIA_GPU_TAG="$NVIDIA_GPU_TAG" CERN_CHART_ENABLED="$CERN_CHART_ENABLED" CERN_CHART_VERSION="$CERN_CHART_VERSION" +CERN_CHART_VALUES="$CERN_CHART_VALUES" OIDC_ENABLED="$OIDC_ENABLED" OIDC_CLIENT_ID="$OIDC_CLIENT_ID" OIDC_ISSUER_URL="$OIDC_ISSUER_URL" diff --git a/magnum/drivers/common/templates/kubernetes/helm/cern-chart.sh b/magnum/drivers/common/templates/kubernetes/helm/cern-chart.sh index da88d4e4f3ed2cb51aa6857eb76faa3604c671d9..0f958aca37ff84b6382fb50e4bfdf0557f3a7879 100644 --- a/magnum/drivers/common/templates/kubernetes/helm/cern-chart.sh +++ b/magnum/drivers/common/templates/kubernetes/helm/cern-chart.sh @@ -15,6 +15,8 @@ if [ "$(echo ${MONITORING_ENABLED} | tr '[:upper:]' '[:lower:]')" = "true" ] && else CERN_CENTRAL_MONITORING="false" fi +# CERN_CENTRAL_MONITORING is not a magnum value, need to write it in heat-params +echo "CERN_CENTRAL_MONITORING=\"${CERN_CENTRAL_MONITORING}\"" >> /etc/sysconfig/heat-params if [ "$(echo ${LOGGING_INSTALLER} | tr '[:upper:]' '[:lower:]')" = "helm" ] && \ [ ! -z "${LOGGING_PRODUCER}" ]; then @@ -22,6 +24,8 @@ if [ "$(echo ${LOGGING_INSTALLER} | tr '[:upper:]' '[:lower:]')" = "helm" ] && \ else CERN_CENTRAL_LOGGING="false" fi +# CERN_CENTRAL_LOGGING is not a magnum value, need to write it in heat-params +echo "CERN_CENTRAL_LOGGING=\"${CERN_CENTRAL_LOGGING}\"" >> /etc/sysconfig/heat-params NVIDIA_GPU_VALUES="" if [ "$(echo ${NVIDIA_GPU_TAG})" != "" ]; then @@ -38,6 +42,46 @@ fi ### Configuration ############################################################################### CHART_NAME="cern-magnum" +_cern_chart_values_file="/srv/magnum/kubernetes/cern_chart_values.yaml" +if [ "$(echo ${CERN_CHART_VALUES})" != "" ]; then + # decode base64 and indent by 4 spaces to write the ConfigMap below + echo ${CERN_CHART_VALUES} | base64 -d | sed 's/^/ /g'> ${_cern_chart_values_file} + # backwards compatible with labels happens later with envsubst + # envsubst does not work with shell variables, it works only with environment variables. + while read line + do + heat_param_name=$(echo $line | cut -d"=" -f1) + heat_param_value=$(echo $line | cut -d"=" -f2 | sed 's/"//g') + sed -i "s#\${${heat_param_name}}#${heat_param_value}#g" ${_cern_chart_values_file} + done < /etc/sysconfig/heat-params +else + cat <<EOF > ${_cern_chart_values_file} + eosxd: + enabled: ${EOS_ENABLED} + nvidia-gpu: + enabled: ${NVIDIA_GPU_ENABLED} +${NVIDIA_GPU_VALUES} + fluentd: + enabled: ${CERN_CENTRAL_LOGGING} + output: + producer: ${LOGGING_PRODUCER} + endpoint: ${LOGGING_HTTP_DESTINATION} + includeInternal: ${LOGGING_INCLUDE_INTERNAL} + containerRuntime: ${CONTAINER_RUNTIME} + landb-sync: + enabled: ${LANDB_SYNC_ENABLED} + prometheus-cern: + enabled: ${CERN_CENTRAL_MONITORING} + ceph-csi-cephfs: + enabled: ${CEPHFS_CSI_ENABLED} + openstack-cinder-csi: + enabled: ${CINDER_CSI_ENABLED} + openstack-manila-csi: + enabled: ${MANILA_CSI_ENABLED} + base: + enabled: ${CERN_ENABLED} +EOF +fi if [ "$(echo ${CERN_CHART_ENABLED} | tr '[:upper:]' '[:lower:]')" = "true" ]; then HELM_MODULE_CONFIG_FILE="/srv/magnum/kubernetes/helm/${CHART_NAME}.yaml" @@ -71,30 +115,7 @@ data: fi install-${CHART_NAME}-values.yaml: | - eosxd: - enabled: ${EOS_ENABLED} - nvidia-gpu: - enabled: ${NVIDIA_GPU_ENABLED} -${NVIDIA_GPU_VALUES} - fluentd: - enabled: ${CERN_CENTRAL_LOGGING} - output: - producer: ${LOGGING_PRODUCER} - endpoint: ${LOGGING_HTTP_DESTINATION} - includeInternal: ${LOGGING_INCLUDE_INTERNAL} - containerRuntime: ${CONTAINER_RUNTIME} - landb-sync: - enabled: ${LANDB_SYNC_ENABLED} - prometheus-cern: - enabled: ${CERN_CENTRAL_MONITORING} - ceph-csi-cephfs: - enabled: ${CEPHFS_CSI_ENABLED} - openstack-cinder-csi: - enabled: ${CINDER_CSI_ENABLED} - openstack-manila-csi: - enabled: ${MANILA_CSI_ENABLED} - base: - enabled: ${CERN_ENABLED} +$(cat ${_cern_chart_values_file}) --- diff --git a/magnum/drivers/heat/k8s_fedora_template_def.py b/magnum/drivers/heat/k8s_fedora_template_def.py index 04de825f54f275d3a7f5f77f8fbb4725bdd0c2d7..bd88b78da07bfab89ae057ee3a1ec7c952e275ca 100644 --- a/magnum/drivers/heat/k8s_fedora_template_def.py +++ b/magnum/drivers/heat/k8s_fedora_template_def.py @@ -131,7 +131,7 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition): 'nvidia_gpu_tag', 'cern_chart_enabled', 'cern_chart_version', 'oidc_issuer_url', 'oidc_username_claim', 'oidc_groups_claim', 'oidc_username_prefix', 'oidc_groups_prefix', 'oidc_client_id', - 'oidc_enabled', 'ignition_version'] + 'oidc_enabled', 'ignition_version', 'cern_chart_values'] labels = self._get_relevant_labels(cluster, kwargs) diff --git a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml index 575d121d1996be50cdae1874fe4bc122c291fed5..80d9d9b142e17550f4673e5e9e4e8757ef440622 100644 --- a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml @@ -1101,6 +1101,11 @@ parameters: description: The ignition version for the FCOS server bootstrap default: 3.0.0 + cern_chart_values: + type: string + description: base64 encoded helm values for the cern meta chart + default: "" + resources: network: @@ -1377,6 +1382,7 @@ resources: oidc_groups_prefix: {get_param: oidc_groups_prefix} oidc_username: {get_param: oidc_username} ignition_version: {get_param: ignition_version} + cern_chart_values: {get_param: cern_chart_values} kube_cluster_config: condition: create_cluster_resources diff --git a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubemaster.yaml b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubemaster.yaml index d5afbf25a9a16741f21d64339896a54d7955fbb7..587678ec1f9b9e2c3d23c782fe77d851e0b5625e 100644 --- a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubemaster.yaml +++ b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubemaster.yaml @@ -823,6 +823,10 @@ parameters: type: string description: The ignition version for the FCOS server bootstrap + cern_chart_values: + type: string + description: base64 encoded helm values for the cern meta chart + conditions: image_based: {equals: [{get_param: boot_volume_size}, 0]} @@ -1026,6 +1030,7 @@ resources: "$NVIDIA_GPU_TAG": {get_param: nvidia_gpu_tag} "$CERN_CHART_ENABLED": {get_param: cern_chart_enabled} "$CERN_CHART_VERSION": {get_param: cern_chart_version} + "$CERN_CHART_VALUES": {get_param: cern_chart_values} "$OIDC_ENABLED": {get_param: oidc_enabled} "$OIDC_CLIENT_ID": {get_param: oidc_client_id} "$OIDC_ISSUER_URL": {get_param: oidc_issuer_url}