Removed no longer needed docker-compose yml for registry
Some checks are pending
CI/CD Pipeline (Fully Isolated DinD) / Run Tests (DinD) (push) Waiting to run
CI/CD Pipeline (Fully Isolated DinD) / Build and Push Docker Images (DinD) (push) Blocked by required conditions
CI/CD Pipeline (Fully Isolated DinD) / Deploy to Production (push) Blocked by required conditions
Some checks are pending
CI/CD Pipeline (Fully Isolated DinD) / Run Tests (DinD) (push) Waiting to run
CI/CD Pipeline (Fully Isolated DinD) / Build and Push Docker Images (DinD) (push) Blocked by required conditions
CI/CD Pipeline (Fully Isolated DinD) / Deploy to Production (push) Blocked by required conditions
This commit is contained in:
parent
98c5fb948f
commit
92a306ddc5
3 changed files with 13 additions and 88 deletions
|
@ -702,17 +702,9 @@ sudo sed -i "s/YOUR_CI_CD_IP/YOUR_ACTUAL_IP_ADDRESS/g" /opt/APP_NAME/registry/op
|
||||||
sudo sed -i "s/YOUR_REGISTRY_NAME/APP_NAME-Registry/g" /opt/APP_NAME/registry/openssl.conf
|
sudo sed -i "s/YOUR_REGISTRY_NAME/APP_NAME-Registry/g" /opt/APP_NAME/registry/openssl.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.2.1 Alternative: Use Podman Compose
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Use podman-compose (Docker Compose compatible)
|
|
||||||
podman-compose -f docker-registry.yml up -d
|
|
||||||
|
|
||||||
# Check status
|
#### 5.2.1 Security Features Applied
|
||||||
podman-compose -f docker-registry.yml ps
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 5.2.2 Security Features Applied
|
|
||||||
|
|
||||||
The Docker Registry v2 setup includes comprehensive security hardening:
|
The Docker Registry v2 setup includes comprehensive security hardening:
|
||||||
|
|
||||||
|
@ -740,6 +732,9 @@ The Docker Registry v2 setup includes comprehensive security hardening:
|
||||||
- ✅ Container policy enforcement via containers-policy.json
|
- ✅ Container policy enforcement via containers-policy.json
|
||||||
- ✅ Volume mounts with read-only where possible
|
- ✅ Volume mounts with read-only where possible
|
||||||
|
|
||||||
|
#### 5.2.2 Set Up Authentication and Permissions
|
||||||
|
|
||||||
|
```bash
|
||||||
# Create FHS-compliant authentication directory
|
# Create FHS-compliant authentication directory
|
||||||
sudo mkdir -p /etc/registry/auth
|
sudo mkdir -p /etc/registry/auth
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /etc/registry/auth
|
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /etc/registry/auth
|
||||||
|
@ -759,17 +754,15 @@ sudo chmod 600 /etc/registry/auth/.htpasswd
|
||||||
# Set proper permissions for configuration files
|
# Set proper permissions for configuration files
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/nginx.conf
|
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/nginx.conf
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/openssl.conf
|
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/openssl.conf
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/docker-registry.yml
|
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/registry-pod.yaml
|
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/registry-pod.yaml
|
||||||
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/containers-policy.json
|
sudo chown CI_SERVICE_USER:CI_SERVICE_USER /opt/APP_NAME/registry/containers-policy.json
|
||||||
sudo chmod 644 /opt/APP_NAME/registry/nginx.conf
|
sudo chmod 644 /opt/APP_NAME/registry/nginx.conf
|
||||||
sudo chmod 644 /opt/APP_NAME/registry/openssl.conf
|
sudo chmod 644 /opt/APP_NAME/registry/openssl.conf
|
||||||
sudo chmod 644 /opt/APP_NAME/registry/docker-registry.yml
|
|
||||||
sudo chmod 644 /opt/APP_NAME/registry/registry-pod.yaml
|
sudo chmod 644 /opt/APP_NAME/registry/registry-pod.yaml
|
||||||
sudo chmod 644 /opt/APP_NAME/registry/containers-policy.json
|
sudo chmod 644 /opt/APP_NAME/registry/containers-policy.json
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.3 Create FHS-Compliant Directory Structure
|
#### 5.2.3 Create FHS-Compliant Directory Structure
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create FHS-compliant certificate directory structure
|
# Create FHS-compliant certificate directory structure
|
||||||
|
@ -794,7 +787,7 @@ sudo chmod 755 /var/lib/registry/data # Registry data
|
||||||
sudo ln -sf /var/lib/registry/data /opt/APP_NAME/registry/registry
|
sudo ln -sf /var/lib/registry/data /opt/APP_NAME/registry/registry
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.4 Generate TLS Certificate and Install for Podman
|
#### 5.2.4 Generate TLS Certificate and Install for Podman
|
||||||
|
|
||||||
**Choose one of the following options based on whether you have a domain name:**
|
**Choose one of the following options based on whether you have a domain name:**
|
||||||
|
|
||||||
|
@ -888,9 +881,9 @@ sudo cp /etc/registry/certs/registry.crt /etc/containers/certs.d/YOUR_DOMAIN_NAM
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**After completing the steps for your chosen option, continue with Step 5.7 (Start Docker Registry with Docker Compose).**
|
**After completing the steps for your chosen option, continue with Step 5.5 (Set Up Systemd Service for Docker Registry v2).**
|
||||||
|
|
||||||
#### 5.5 Install Certificate for Podman (Option B Only)
|
#### 5.3 Install Certificate for Podman (Option B Only)
|
||||||
|
|
||||||
**Important**: This step adds the Let's Encrypt certificate for Podman. Since Let's Encrypt is a trusted CA, Podman will automatically trust this certificate.
|
**Important**: This step adds the Let's Encrypt certificate for Podman. Since Let's Encrypt is a trusted CA, Podman will automatically trust this certificate.
|
||||||
|
|
||||||
|
@ -913,7 +906,7 @@ echo "Certificate installation completed successfully!"
|
||||||
echo "Podman can now connect to the registry securely using your domain name"
|
echo "Podman can now connect to the registry securely using your domain name"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.6 Set Up Automatic Certificate Renewal (Option B Only)
|
#### 5.4 Set Up Automatic Certificate Renewal (Option B Only)
|
||||||
|
|
||||||
**Important**: Let's Encrypt certificates expire after 90 days, so we need to set up automatic renewal.
|
**Important**: Let's Encrypt certificates expire after 90 days, so we need to set up automatic renewal.
|
||||||
|
|
||||||
|
@ -930,7 +923,7 @@ echo "Automatic certificate renewal configured!"
|
||||||
echo "Certificates will be renewed automatically and the registry service will be restarted"
|
echo "Certificates will be renewed automatically and the registry service will be restarted"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.7 Set Up Systemd Service for Docker Registry v2
|
#### 5.5 Set Up Systemd Service for Docker Registry v2
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create system-wide Podman configuration to avoid permission issues
|
# Create system-wide Podman configuration to avoid permission issues
|
||||||
|
@ -969,7 +962,7 @@ sudo systemctl status docker-registry.service
|
||||||
sudo journalctl -u docker-registry.service -f --no-pager -n 50
|
sudo journalctl -u docker-registry.service -f --no-pager -n 50
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.8 Verify Docker Registry v2 Service
|
#### 5.6 Verify Docker Registry v2 Service
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Check that the service is running properly
|
# Check that the service is running properly
|
||||||
|
@ -985,7 +978,7 @@ sudo su - CI_SERVICE_USER -c "podman logs registry-pod-nginx"
|
||||||
sudo su - CI_SERVICE_USER -c "podman logs registry-pod-registry"
|
sudo su - CI_SERVICE_USER -c "podman logs registry-pod-registry"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5.9 Test Registry Setup
|
#### 5.7 Test Registry Setup
|
||||||
|
|
||||||
**For Option A (Self-signed certificates):**
|
**For Option A (Self-signed certificates):**
|
||||||
|
|
||||||
|
@ -1432,7 +1425,6 @@ ls -la /tmp/ci-workspace
|
||||||
The Docker Registry setup now follows the Filesystem Hierarchy Standard (FHS) for better organization and security:
|
The Docker Registry setup now follows the Filesystem Hierarchy Standard (FHS) for better organization and security:
|
||||||
|
|
||||||
**Application Files** (in `/opt/APP_NAME/registry/`):
|
**Application Files** (in `/opt/APP_NAME/registry/`):
|
||||||
- `docker-registry.yml` - Podman Compose configuration for Docker Registry v2 and nginx
|
|
||||||
- `registry-pod.yaml` - Kubernetes Pod manifest for Docker Registry v2 and nginx
|
- `registry-pod.yaml` - Kubernetes Pod manifest for Docker Registry v2 and nginx
|
||||||
- `nginx.conf` - nginx reverse proxy configuration from project repository
|
- `nginx.conf` - nginx reverse proxy configuration from project repository
|
||||||
- `openssl.conf` - OpenSSL configuration for certificate generation from project repository
|
- `openssl.conf` - OpenSSL configuration for certificate generation from project repository
|
||||||
|
@ -2452,7 +2444,6 @@ sudo rm -rf /opt/APP_NAME/registry/openssl.conf
|
||||||
sudo rm -rf /opt/APP_NAME/registry/certs/requests/openssl.conf
|
sudo rm -rf /opt/APP_NAME/registry/certs/requests/openssl.conf
|
||||||
|
|
||||||
# Note: DO NOT remove these files as they are needed for operation:
|
# Note: DO NOT remove these files as they are needed for operation:
|
||||||
# - /opt/APP_NAME/registry/docker-registry.yml
|
|
||||||
# - /opt/APP_NAME/registry/registry-pod.yaml
|
# - /opt/APP_NAME/registry/registry-pod.yaml
|
||||||
# - /opt/APP_NAME/registry/nginx.conf
|
# - /opt/APP_NAME/registry/nginx.conf
|
||||||
# - /opt/APP_NAME/registry/containers-policy.json
|
# - /opt/APP_NAME/registry/containers-policy.json
|
||||||
|
|
|
@ -4,7 +4,7 @@ This folder contains the configuration files for the Docker Registry setup used
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
|
|
||||||
- **`docker-registry.yml`**: Podman Compose configuration for Docker Registry v2 and nginx reverse proxy
|
|
||||||
- **`nginx.conf`**: nginx configuration for HTTPS and authentication
|
- **`nginx.conf`**: nginx configuration for HTTPS and authentication
|
||||||
- **`docker-registry.service`**: Systemd service file for Docker Registry v2
|
- **`docker-registry.service`**: Systemd service file for Docker Registry v2
|
||||||
- **`README.md`**: This documentation file
|
- **`README.md`**: This documentation file
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
services:
|
|
||||||
registry:
|
|
||||||
image: registry@sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
|
|
||||||
container_name: registry
|
|
||||||
restart: unless-stopped
|
|
||||||
user: "1000:1000"
|
|
||||||
environment:
|
|
||||||
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /var/lib/registry
|
|
||||||
# Disable image deletion for security
|
|
||||||
REGISTRY_STORAGE_DELETE_ENABLED: "false"
|
|
||||||
# Listen only inside the compose network
|
|
||||||
REGISTRY_HTTP_ADDR: 0.0.0.0:5000
|
|
||||||
# TLS configuration
|
|
||||||
REGISTRY_HTTP_TLS_CERTIFICATE: /etc/registry/certs/registry.crt
|
|
||||||
REGISTRY_HTTP_TLS_KEY: /etc/registry/certs/private/registry.key
|
|
||||||
volumes:
|
|
||||||
- ./registry:/var/lib/registry
|
|
||||||
- /etc/registry/certs:/etc/registry/certs:ro
|
|
||||||
expose:
|
|
||||||
- "5000" # internal only, not published
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '1.0'
|
|
||||||
memory: 1G
|
|
||||||
reservations:
|
|
||||||
cpus: '0.5'
|
|
||||||
memory: 512M
|
|
||||||
security_opt:
|
|
||||||
- no-new-privileges:true
|
|
||||||
- seccomp:unconfined
|
|
||||||
read_only: true
|
|
||||||
tmpfs:
|
|
||||||
- /tmp:noexec,nosuid,size=100m
|
|
||||||
|
|
||||||
nginx:
|
|
||||||
image: nginx@sha256:6650513efd1d27c1f8a5351cbd33edf85cc7e3b73dc4d4d4e8f8c0b3d0b3d0b3d
|
|
||||||
container_name: nginx
|
|
||||||
restart: unless-stopped
|
|
||||||
user: "1000:1000"
|
|
||||||
depends_on:
|
|
||||||
- registry
|
|
||||||
ports:
|
|
||||||
- "443:443" # HTTPS only
|
|
||||||
- "4443:4443"
|
|
||||||
# deliberately no "80:80" – no HTTP
|
|
||||||
volumes:
|
|
||||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
|
||||||
- /etc/registry/certs:/etc/registry/certs:ro
|
|
||||||
- /etc/registry/auth/.htpasswd:/etc/nginx/.htpasswd:ro
|
|
||||||
- /var/log/nginx:/var/log/nginx
|
|
||||||
- ./containers-policy.json:/etc/containers/policy.json:ro
|
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpus: '0.5'
|
|
||||||
memory: 512M
|
|
||||||
reservations:
|
|
||||||
cpus: '0.25'
|
|
||||||
memory: 256M
|
|
||||||
security_opt:
|
|
||||||
- no-new-privileges:true
|
|
||||||
- seccomp:unconfined
|
|
||||||
read_only: true
|
|
||||||
tmpfs:
|
|
||||||
- /tmp:noexec,nosuid,size=100m
|
|
Loading…
Add table
Reference in a new issue