小编Gab*_*lan的帖子

使用 HTTPS Web 服务在 Ingress 上获取 ERR_TOO_MANY_REDIRECTS

我有一个在自定义节点上运行的 Rancher 集群 (v2.4.5),配置如下:

  • 外部机器(example.com):
    • 在端口 8443 上运行 Rancher 服务器;
    • 使用以下基本配置(以及其他不相关的内容)运行 NGINX:
user  nginx;
  
worker_processes 4;
worker_rlimit_nofile 40000;
  
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
  
events {
  worker_connections 8192;
}
 
http {
  upstream rancher_servers {
    least_conn;
    server <MY_NODE_IP>:443 max_fails=3 fail_timeout=5s;
  }

  server {
    listen 443 ssl http2;
    server_name example.com service1.example.com service2.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass https://rancher_servers;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_read_timeout 900s; …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes rancher kubernetes-ingress nginx-ingress

5
推荐指数
1
解决办法
1万
查看次数

有没有办法从 ModelViewSet 中的latedmanager中过滤掉项目?

我使用 DRF 来实现一个简单的 API,我想知道是否有办法实现这种行为:

  • 我有两个类似于以下的模型:
class Table(models.Model):
    name = models.CharField(max_length=100)
    ...

class Column(models.Model):
    original_name = models.CharField(max_length=100)
    name = models.CharField(max_length=100, blank=True, null=True)
    ...
    table = models.ForeignKey(Table, on_delete=models.CASCADE, related_name="columns")
Run Code Online (Sandbox Code Playgroud)
  • 他们的序列化器如下:
class ColumnSerializer(serializers.HyperlinkedModelSerializer):
    table = serializers.HyperlinkedRelatedField(
        read_only=True, view_name="table-detail"
    )

    class Meta:
        model = Column
        fields = ["url", "name", "table"]

class TableSerializer(serializers.HyperlinkedModelSerializer):
    dataset = serializers.HyperlinkedRelatedField(
        read_only=True, view_name="dataset-detail"
    )
    tags = serializers.SlugRelatedField(
        many=True, slug_field="name", queryset=Tag.objects.all()
    )
    columns = ColumnSerializer(many=True, read_only=True)

    class Meta:
        model = Table
        fields = [
            "url",
            "name",
            ...
            "columns",
        ]
Run Code Online (Sandbox Code Playgroud)
  • 这会返回类似于以下内容的输出
{ …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

4
推荐指数
1
解决办法
89
查看次数

Rancher - 如何公开我的服务?

我有一个正在运行的 Rancher 设置,如下所示:

  • 主机(运行牧场主/牧场主容器)在公共 IP 上;
  • 无法从 Internet 访问的专用网络 (10.1.1.0/24) 中的节点。

我的目标是使用 Rancher Load Balancing 或任何类似的东西来为 Web 应用程序提供服务。为此,我执行了以下步骤:

  • 在将端口 80/tcp 映射为名为“web-app”的 NodePort(侦听端口是随机的)的 3 个 pod 上使用“rancher/hello-world”映像部署工作负载;
  • 在相同的命名空间中添加名为“hello”的 Ingress,选择“自动生成.xip.io主机名”并将路由“/”添加到端口 80 上的“web-app”。

这适用于本地网络,因为我得到了一个像http://hello.gabriel-milan.10.1.1.14.xip.io/这样的地址,它将解析为 10.1.1.14,这是本地的。

我想为我的一个公共 IP 公开此服务。我怎样才能做到这一点?

load-balancing kubernetes rancher kubernetes-ingress rke

3
推荐指数
1
解决办法
4381
查看次数