Helm2airgap

From Essential
Jump to navigation Jump to search
####### BEGIN USEFULL CODE ########
HELM_NAME=cncf/gitlab
HELM_URL=https://charts.gitlab.io

PROJECT_ORGANISATION=$(dirname ${HELM_NAME} )
PROJECT_NAME=$(basename ${HELM_NAME} )
export clusterName=cl1
export domainName=example.com
HELM_OPT="\
--version 6.4.0 \
--set global.hosts.domain=${PROJECT_ORGANISATION}-${PROJECT_NAME}.apps.${clusterName}.${domainName} \
--set global.edition=ce \
--set certmanager.install=false \
--set global.ingress.configureCertmanager=false \
--set nginx-ingress.enabled=false \
--set global.ingress.class=k8s \
-n ${PROJECT_ORGANISATION}-${PROJECT_NAME}"
#--set minio.install=false \
#--set global.minio.enabled=false \

export REGISTRY_FQDN_DST=example.com:5000
cat <<EOT >~/${REGISTRY_FQDN_DST}-auth.json
{"auths":{"${REGISTRY_FQDN_DST}":{"auth":"*******"}}}
EOT
####### END USEFULL CODE ########

yum install skopeo jq -y
cd
rm -rf ${PROJECT_ORGANISATION}-${PROJECT_NAME}
mkdir ${PROJECT_ORGANISATION}-${PROJECT_NAME}
cd ${PROJECT_ORGANISATION}-${PROJECT_NAME}
helm repo add $(dirname ${HELM_NAME} ) ${HELM_URL}
helm repo update
helm pull ${HELM_NAME}
tar xvf *
cd $(ls -1t |head -1 )
kubectl delete namespace ${PROJECT_ORGANISATION}-${PROJECT_NAME}
#oc new-project ${PROJECT_ORGANISATION}-${PROJECT_NAME}
kubectl create namespace ${PROJECT_ORGANISATION}-${PROJECT_NAME}
kubectl config set-context --current --namespace=${PROJECT_ORGANISATION}-${PROJECT_NAME}
helm dependency update
#helm dependency build
helm template . ${HELM_OPT} >k8s.yaml
if [ ! -e ${XDG_RUNTIME_DIR}/containers/auth.json ];then
  mkdir -p ${XDG_RUNTIME_DIR}/containers
  cat ~/${REGISTRY_FQDN_DST}-auth.json >${XDG_RUNTIME_DIR}/containers/auth.json
else
  cat ${XDG_RUNTIME_DIR}/containers/auth.json >~/containers-auth.json
  jq -s '.[0] * .[1]' ~/containers-auth.json ~/${REGISTRY_FQDN_DST}-auth.json |tee ${XDG_RUNTIME_DIR}/containers/auth.json
fi
cat k8s.yaml |grep -v ${REGISTRY_FQDN_DST} |sed -rn 's!^[[:space:]]*[^#].*\bimage:[[:space:]]*([[:graph:]]+)!\1!p' |sed -r 's#@.*##' |tr -d '"' |tr -d "'" |\
 while read IMAGE_PATH ;do
  skopeo copy docker://${IMAGE_PATH} docker://${REGISTRY_FQDN_DST}/${PROJECT_ORGANISATION}/${PROJECT_NAME}/${IMAGE_PATH} &&(
    sed -ri 's#^(.*[[:space:]]image:).*'${IMAGE_PATH}'.*$#\1 '${REGISTRY_FQDN_DST}'/'${PROJECT_ORGANISATION}'/'${PROJECT_NAME}'/'${IMAGE_PATH}'#g' k8s.yaml )
done
kubectl apply -f k8s.yaml