Terraform module for deploying a self-hosted instance of FreshRSS to Kubernetes in Azure public cloud.
Important
This module is meant to be simple and cheap, not highly available and secure
This guide presumes you have a basic understanding of the following:
- AKS
- Terraform
- Azure CLI
- Kubectl
- Kustomize
The following part provides example values you can use to deploy the FreshRSS instance to Azure.
cat << EOF > main.tf
module "freshrss" {
source = "git::https://github.com/dragonraid/freshrss-terraform-modules/terraform/azure"
location = "North Europe"
aks_default_node_pool = {}
aks_network_profile = {}
}
EOF
cat << EOF > provider.tf
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.110.0"
}
}
}
provider "azurerm" {
# Configuration options
}
EOF
Then run the following commands to deploy the FreshRSS instance to Azure.
az login
terraform init
terraform apply
terraform output -raw kube_config > /tmp/kubeconfig
KUBECONFIG=/tmp/kubeconfig:~/.kube/config kubectl config view --flatten > ~/.kube/config
kubectl apply -k modules/kubernetes/base
Get the external IP of the FreshRSS instance by running the following command.
kubectl get ingress freshrss -n freshrss -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Happy reading!
Name | Description | Type | Default | Required |
---|---|---|---|---|
name | Name of the stack referenced in resource names. | string | freshrss |
no |
location | The Azure region in which to deploy the FreshRSS resources. | string |
n/a | yes |
vnet_cidr | Azure VNET address prefix. | string | 10.0.0.0/24 |
no |
subnet_address_prefixes | Azure subnet address prefix. | string | 10.0.0.0/24 |
no |
aks_sku_tier | The SKU tier of the AKS cluster. | string | Free |
no |
workload_identity_enabled | Enable workload identity for the AKS cluster. | bool | false |
no |
oidc_issuer_enabled | Enable OIDC issuer for the AKS cluster. | bool | false |
no |
aks_default_node_pool* | The AKS default node pool configuration. | object | {} |
no |
aks_network_profile* | The AKS network profile configuration. | object | {} |
no |
* See below for more information.
Name | Description | Type | Default | Required |
---|---|---|---|---|
name | The name of the default node pool. | string | default |
no |
node_count | The number of nodes in the default node pool. | number | 1 |
no |
vm_size | The size of the Virtual Machine. | string | Standard_B2s |
no |
Name | Description | Type | Default | Required |
---|---|---|---|---|
network_plugin | The network plugin used for the AKS cluster. | string | azure |
no |
service_cidr | The service CIDR used for the AKS cluster. | string | 172.32.0.0/12 |
no |
dns_service_ip | The DNS service IP used for the AKS cluster. | string | 172.32.0.2 |
no |
Name | Description | Type |
---|---|---|
kube_config | The kubeconfig file for the AKS cluster. | string |