Skip to content

Commit e45d87c

Browse files
author
natalia.gassis
committed
Aprimorar configuração do ambiente DevOps: atualizar Dockerfile e scripts de inicialização para melhor suporte ao Docker e KinD
1 parent 6c21f19 commit e45d87c

File tree

3 files changed

+40
-36
lines changed

3 files changed

+40
-36
lines changed

.devcontainer/Dockerfile

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# Usar uma imagem base com suporte ao Docker
21
FROM mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04
32

4-
# Evitar prompts interativos durante a instalação
53
ENV DEBIAN_FRONTEND=noninteractive
64

7-
# Instalar dependências básicas
85
RUN apt-get update && apt-get install -y \
96
apt-transport-https \
107
ca-certificates \
@@ -15,44 +12,38 @@ RUN apt-get update && apt-get install -y \
1512
git \
1613
unzip \
1714
jq \
15+
sudo \
1816
&& rm -rf /var/lib/apt/lists/*
1917

20-
# Instalar Docker CLI
18+
# Docker CLI
2119
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
2220
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list \
2321
&& apt-get update && apt-get install -y docker-ce-cli docker-buildx-plugin docker-compose-plugin \
2422
&& rm -rf /var/lib/apt/lists/*
2523

26-
# Instalar kubectl
24+
# kubectl
2725
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
2826
&& chmod +x kubectl \
2927
&& mv kubectl /usr/local/bin/
3028

31-
# Instalar KinD
29+
# KinD
3230
RUN curl -Lo /usr/local/bin/kind https://kind.sigs.k8s.io/dl/v0.21.0/kind-linux-amd64 \
3331
&& chmod +x /usr/local/bin/kind
3432

35-
# Instalar Helm
33+
# Helm
3634
RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
3735

38-
# Instalar K9s (cliente Kubernetes TUI)
36+
# K9s
3937
RUN curl -Lo k9s.tar.gz https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz \
4038
&& tar -xf k9s.tar.gz \
4139
&& mv k9s /usr/local/bin/ \
4240
&& rm k9s.tar.gz LICENSE README.md
4341

44-
# Configurar permissões para o usuário vscode
45-
RUN groupadd docker || true \
46-
&& usermod -aG docker vscode || true \
47-
&& mkdir -p /home/vscode/.kube \
48-
&& chown -R vscode:vscode /home/vscode/.kube
49-
50-
# Criar diretório para configurações do KinD
51-
RUN mkdir -p /home/vscode/.kind \
52-
&& chown -R vscode:vscode /home/vscode/.kind
53-
54-
# Limpar cache
55-
RUN apt-get clean && \
56-
rm -rf /var/lib/apt/lists/*
42+
# Permissões e sudo sem senha para vscode
43+
RUN groupadd -f docker \
44+
&& usermod -aG docker vscode \
45+
&& mkdir -p /home/vscode/.kube /home/vscode/.kind \
46+
&& chown -R vscode:vscode /home/vscode/.kube /home/vscode/.kind \
47+
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/99-vscode
5748

5849
USER vscode

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
}
2828
},
2929
"forwardPorts": [
30-
2375, // Docker daemon
31-
6443 // Kubernetes API server (KinD)
30+
2375,
31+
6443
3232
],
3333
"postCreateCommand": "bash ./.devcontainer/post-create.sh",
3434
"remoteUser": "vscode"

.devcontainer/post-create.sh

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#!/bin/bash
22

33
set -e
4+
set -x
45

56
# Função para verificar se o Docker está funcionando
67
check_docker() {
78
echo "Verificando conectividade com o Docker..."
8-
if ! docker info > /dev/null 2>&1; then
9+
if ! sudo docker info > /dev/null 2>&1; then
910
echo "ERRO: Não foi possível conectar ao Docker. Verifique se o socket está mapeado corretamente."
1011
return 1
1112
fi
@@ -16,9 +17,9 @@ check_docker() {
1617
# Função para criar um cluster KinD
1718
create_kind_cluster() {
1819
echo "Criando cluster KinD..."
19-
20+
2021
# Verificar se já existe um cluster com este nome
21-
if kind get clusters 2>/dev/null | grep -q "devcontainer-cluster"; then
22+
if sudo kind get clusters 2>/dev/null | grep -q "devcontainer-cluster"; then
2223
echo "Cluster 'devcontainer-cluster' já existe."
2324
return 0
2425
fi
@@ -36,33 +37,45 @@ nodes:
3637
kubeletExtraArgs:
3738
node-labels: "ingress-ready=true"
3839
extraPortMappings:
39-
- containerPort: 80
40-
hostPort: 80
40+
- containerPort: 8081
41+
hostPort: 8081
4142
protocol: TCP
4243
- containerPort: 443
43-
hostPort: 443
44+
hostPort: 8443
45+
protocol: TCP
46+
- containerPort: 6443
47+
hostPort: 16443 # novo hostPort para evitar conflito
4448
protocol: TCP
4549
EOF
4650

47-
kind create cluster --name devcontainer-cluster --config /tmp/kind-config.yaml
48-
51+
sudo kind create cluster --name devcontainer-cluster --config /tmp/kind-config.yaml
52+
4953
echo "Configurando o contexto do kubectl..."
5054
mkdir -p $HOME/.kube
51-
kind get kubeconfig --name devcontainer-cluster > $HOME/.kube/config
52-
55+
sudo kind get kubeconfig --name devcontainer-cluster > $HOME/.kube/config
56+
57+
# Corrige o endpoint do servidor para localhost:16443 e nomes de contexto/cluster/user
58+
sed -i 's|server: https://127.0.0.1:[0-9]*|server: https://127.0.0.1:16443|' $HOME/.kube/config
59+
sed -i 's|name: kind-.*|name: kind-devcontainer-cluster|g' $HOME/.kube/config
60+
sed -i 's|cluster: kind-.*|cluster: kind-devcontainer-cluster|g' $HOME/.kube/config
61+
sed -i 's|user: kind-.*|user: kind-devcontainer-cluster|g' $HOME/.kube/config
62+
sed -i 's|current-context: kind-.*|current-context: kind-devcontainer-cluster|g' $HOME/.kube/config
63+
64+
sudo chown vscode:vscode $HOME/.kube/config
65+
5366
return 0
5467
}
5568

56-
# Instalar dependências do projeto
69+
# Instalar dependências do projeto (opcional)
5770
install_project_deps() {
5871
echo "Instalando dependências adicionais do projeto..."
59-
# Adicione comandos adicionais aqui
72+
# Adicione comandos adicionais aqui, se necessário
6073
}
6174

6275
# Execução principal
6376
main() {
6477
echo "Iniciando configuração do ambiente de desenvolvimento..."
65-
78+
6679
if check_docker; then
6780
create_kind_cluster
6881
install_project_deps

0 commit comments

Comments
 (0)