FROM gcr.io/pingcap-public/pingcap/alpine-glibc:alpine-3.14.3

ARG APP_ENV
ARG APP_PARTITION
ARG AWS_IAM_AUTH_BIN=/usr/local/bin/aws-iam-authenticator
ARG GKE_GCLOUD_AUTH_PLUGIN_BIN=/usr/local/bin/gke-gcloud-auth-plugin
ARG AZURE_KUBELOGIN=/usr/local/bin/kubelogin
ARG ALICLOUD_RAM_TOOL=/usr/local/bin/ack-ram-tool

ENV APP_ENV=${APP_ENV}
ENV APP_PARTITION=${APP_PARTITION}

WORKDIR /

RUN echo "Building for environment: ${APP_ENV}"

# Download aws-iam-authenticator, required by the jump service when accessing dedicated clusters.
RUN wget -q -O ${AWS_IAM_AUTH_BIN} "https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.6.11/aws-iam-authenticator_0.6.11_linux_amd64" \
    && chmod +x ${AWS_IAM_AUTH_BIN}

# Download gke-gcloud-auth-plugin, required by the jump service when accessing dedicated clusters.
RUN wget -qO- "https://storage.googleapis.com/cloud-sdk-release/for_packagers/linux/google-cloud-cli-gke-gcloud-auth-plugin_404.0.0.orig_amd64.tar.gz" | tar xvz \
    && mv google-cloud-sdk/bin/gke-gcloud-auth-plugin ${GKE_GCLOUD_AUTH_PLUGIN_BIN} \
    && chmod +x ${GKE_GCLOUD_AUTH_PLUGIN_BIN}

# Download kubelogin, required by the jump service when accessing dedicated clusters.
RUN wget -q "https://github.com/Azure/kubelogin/releases/download/v0.1.4/kubelogin-linux-amd64.zip" \
    && unzip -j kubelogin-linux-amd64.zip \
    && mv kubelogin ${AZURE_KUBELOGIN} \
    && chmod +x ${AZURE_KUBELOGIN} \
    && rm kubelogin-linux-amd64.zip

# Download ack-ram-tool, required by the jump service when accessing ACK clusters.
RUN wget -qO- "https://github.com/AliyunContainerService/ack-ram-tool/releases/download/v0.20.0-beta.7/ack-ram-tool_0.20.0-beta.7_Linux_x86_64.tar.gz" | tar xvz \
    && mv ack-ram-tool ${ALICLOUD_RAM_TOOL} \
    && chmod +x ${ALICLOUD_RAM_TOOL} \
    && rm -rf ack-ram-tool* README* LICENSE*
# Configure alicloud profile configure, used to ack-ram-tool to assume role
COPY aliyun_profile_${APP_PARTITION}_${APP_ENV}.json /.aliyun/config.json

COPY bin/devops-server devops-server

USER 65532:65532

ENTRYPOINT ["/devops-server"]