Commit 3a438c6f authored by Carlos Natalino's avatar Carlos Natalino
Browse files

Initial implementation of the workflow. Missing the implementation of detail, add and update.

parents fd582249 f2574313
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -76,7 +76,11 @@ docs/_build/

# PyBuilder
.pybuilder/
target/
**/target/*
!**/target/generated-sources/
!**/target/kubernetes/
**/target/kubernetes/kubernetes.json
!**/target/kubernetes/kubernetes.yml

# Jupyter Notebook
.ipynb_checkpoints
+2 −0
Original line number Diff line number Diff line
@@ -18,4 +18,6 @@ include:
  - local: '/src/service/.gitlab-ci.yml'
  - local: '/src/tester_integration/.gitlab-ci.yml'
  - local: '/src/tester_functional/.gitlab-ci.yml'
  - local: '/src/automation/.gitlab-ci.yml'
  - local: '/src/policy/.gitlab-ci.yml'
  
+23 −14
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ REGISTRY_IMAGE=""
#REGISTRY_IMAGE="http://my-container-registry.local/"

# Set the list of components you want to build images for, and deploy.
COMPONENTS="context device service compute monitoring centralizedattackdetector webui"
COMPONENTS="context device automation policy service compute monitoring centralizedattackdetector webui"

# Set the tag you want to use for your images.
IMAGE_TAG="tf-dev"
@@ -18,7 +18,6 @@ IMAGE_TAG="tf-dev"
# Set the name of the Kubernetes namespace to deploy to.
K8S_NAMESPACE="tf-dev"


########################################################################################################################
# Automated steps start here
########################################################################################################################
@@ -34,10 +33,10 @@ mkdir -p $TMP_MANIFESTS_FOLDER
TMP_LOGS_FOLDER="$TMP_FOLDER/logs"
mkdir -p $TMP_LOGS_FOLDER


# Re-create the namespace to prevent being affected by garbage on it
kubectl delete namespace $K8S_NAMESPACE
kubectl create namespace $K8S_NAMESPACE
printf "\n"

for COMPONENT in $COMPONENTS; do
    echo "Processing '$COMPONENT' component..."
@@ -46,32 +45,42 @@ for COMPONENT in $COMPONENTS; do

    echo "  Building Docker image..."
    BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log"
    docker build -t "$IMAGE_NAME" -f ./src/$COMPONENT/Dockerfile ./src/ > $BUILD_LOG

    if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then
        docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG"
    else 
        docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/ > "$BUILD_LOG"
    fi

    if [ -n "$REGISTRY_IMAGE" ]; then
        echo "Pushing Docker image to '$REGISTRY_IMAGE'..."

        TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log"
        docker tag "$IMAGE_NAME" "$IMAGE_URL" > $TAG_LOG
        docker tag "$IMAGE_NAME" "$IMAGE_URL" > "$TAG_LOG"

        PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log"
        docker push "$IMAGE_URL" > "$PUSH_LOG"
    fi

    echo "  Adapting manifest file..."
    echo "  Adapting '$COMPONENT' manifest file..."
    MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml"
    cp ./manifests/${COMPONENT}service.yaml $MANIFEST
    cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST"
    VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3)

    if [ -n "$REGISTRY_IMAGE" ]; then
        sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:latest#image: $IMAGE_URL#g" $MANIFEST
        sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" $MANIFEST

        sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST"
        sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST"
   
    else
        sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:latest#image: $IMAGE_NAME#g" $MANIFEST
        sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" $MANIFEST
        sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_NAME#g" "$MANIFEST"
        sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST"        
    fi

    echo "  Deploying to Kubernetes..."
    echo "  Deploying '$COMPONENT' component to Kubernetes..."
    DEPLOY_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log"
    kubectl --namespace $K8S_NAMESPACE apply -f $MANIFEST > $DEPLOY_LOG
    kubectl --namespace $K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG"
    printf "\n"
done

kubectl --namespace $K8S_NAMESPACE get all
+1 −0
Original line number Diff line number Diff line
../src/automation/target/kubernetes/kubernetes.yml
 No newline at end of file
+1 −0
Original line number Diff line number Diff line
../src/policy/target/kubernetes/kubernetes.yml
 No newline at end of file
Loading