示例#1
0
    static Task <int> Main(string[] args)
    {
        return(Deployment.RunAsync(() =>
        {
            var config = new Config();
            var isMiniKube = config.GetBoolean("isMiniKube") ?? false;

            var redisMaster = new ServiceDeployment("redis-master", new ServiceDeploymentArgs
            {
                Image = "k8s.gcr.io/redis:e2e",
                Ports = { 6379 },
            });

            var redisReplica = new ServiceDeployment("redis-slave", new ServiceDeploymentArgs
            {
                Image = "gcr.io/google_samples/gb-redisslave:v1",
                Ports = { 6379 },
            });

            var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs
            {
                Replicas = 3,
                Image = "gcr.io/google-samples/gb-frontend:v4",
                Ports = { 80 },
                AllocateIPAddress = true,
                ServiceType = isMiniKube ? "ClusterIP" : "LoadBalancer",
            });

            return new Dictionary <string, object?> {
                { "frontendIp", frontend.IpAddress },
            };
        }));
    }
示例#2
0
        /// <summary>
        /// Creates a new RemoteHostPool using the specified system name and liveliness checker.
        /// </summary>
        /// <param name="reachabilityChecker">A delegate that checks if a given host is reachable or not. Used for background checks of unreachable hosts.
        /// Should return true if the host is reachable, or false if it is unreachable. It should not throw an exception.</param>
        /// <param name="log">An implementation of <see cref="ILog"/> used for logging.</param>
        public RemoteHostPool(
            ServiceDeployment serviceDeployment
            , IServiceDiscoverySource discovery
            , ReachabilityChecker reachabilityChecker
            , Func <DiscoveryConfig> getDiscoveryConfig
            , ILog log
            , HealthMonitor healthMonitor
            , MetricsContext metrics
            )
        {
            DiscoverySource     = discovery;
            ServiceDeployment   = serviceDeployment;
            ReachabilityChecker = reachabilityChecker;
            GetDiscoveryConfig  = getDiscoveryConfig;
            Log = log;
            ReachabilityBroadcaster = new BroadcastBlock <ServiceReachabilityStatus>(null);
            Health = healthMonitor.Get(discovery.Deployment);
            Health.SetHealthData(HealthData);

            ReachableHosts            = new List <RemoteHost>();
            UnreachableHosts          = new List <RemoteHost>();
            EndPointsChangedBlockLink = discovery.EndPointsChanged.LinkTo(new ActionBlock <EndPointsResult>(_ => ReloadEndpoints(_)));
            ReloadEndpoints(discovery.Result);
            Metrics = metrics;
            var metricsContext = Metrics.Context(DiscoverySource.Deployment);

            metricsContext.Gauge("ReachableHosts", () => ReachableHosts.Count, Unit.Custom("EndPoints"));
            metricsContext.Gauge("UnreachableHosts", () => UnreachableHosts.Count, Unit.Custom("EndPoints"));
        }
示例#3
0
    public Guestbook()
    {
        var config     = new Config();
        var isMiniKube = config.GetBoolean("isMiniKube") ?? false;

        var redisLeader = new ServiceDeployment("redis-leader", new ServiceDeploymentArgs
        {
            Image = "redis",
            Ports = { 6379 }
        });

        var redisReplica = new ServiceDeployment("redis-replica", new ServiceDeploymentArgs
        {
            Image = "pulumi/guestbook-redis-replica",
            Ports = { 6379 }
        });

        var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs
        {
            Replicas          = 3,
            Image             = "pulumi/guestbook-php-redis",
            Ports             = { 80 },
            AllocateIPAddress = true,
            ServiceType       = isMiniKube ? "ClusterIP" : "LoadBalancer"
        });

        this.FrontendIp = frontend.IpAddress;
    }
示例#4
0
    public Guestbook()
    {
        var config     = new Config();
        var isMiniKube = config.GetBoolean("isMiniKube") ?? false;

        var redisMaster = new ServiceDeployment("redis-master", new ServiceDeploymentArgs
        {
            Image = "k8s.gcr.io/redis:e2e",
            Ports = { 6379 }
        });

        var redisReplica = new ServiceDeployment("redis-slave", new ServiceDeploymentArgs
        {
            Image = "gcr.io/google_samples/gb-redisslave:v1",
            Ports = { 6379 }
        });

        var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs
        {
            Replicas          = 3,
            Image             = "gcr.io/google-samples/gb-frontend:v4",
            Ports             = { 80 },
            AllocateIPAddress = true,
            ServiceType       = isMiniKube ? "ClusterIP" : "LoadBalancer"
        });

        this.FrontendIp = frontend.IpAddress;
    }
        private async Task GetFirstResult()
        {
            var config = new ServiceDiscoveryConfig
            {
                Scope          = _serviceScope,
                ReloadInterval = _reloadInterval
            };
            var sourceFactory  = Kernel.Get <Func <ServiceDeployment, ServiceDiscoveryConfig, ConsulDiscoverySource> >();
            var serviceContext = new ServiceDeployment(SERVICE_NAME, ENV);

            _consulDiscoverySource = sourceFactory(serviceContext, config);
            await WaitUntilConsulRespondsOrTimeout().ConfigureAwait(false);
        }
        private async Task GetFirstResult()
        {
            var config = new ServiceDiscoveryConfig
            {
                Scope = _serviceScope,
            };
            var sourceFactory  = Kernel.Get <Func <ServiceDeployment, ServiceDiscoveryConfig, ConsulDiscoverySource> >();
            var serviceContext = new ServiceDeployment(SERVICE_NAME, ENV);

            _consulDiscoverySource = sourceFactory(serviceContext, config);
            _consulDiscoverySource.Init();
            await GetNewResult();
        }
示例#7
0
        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj))
            {
                return(false);
            }

            if (ReferenceEquals(this, obj))
            {
                return(true);
            }

            ServiceDeployment other = obj as ServiceDeployment;

            if (other == null)
            {
                return(false);
            }

            return(DeploymentEnvironment == other.DeploymentEnvironment && ServiceName == other.ServiceName);
        }
 public IServiceDiscoverySource GetDiscoverySource(ServiceDeployment serviceDeployment, ServiceDiscoveryConfig serviceDiscoveryConfig)
 {
     return(new LocalDiscoverySource(serviceDeployment));
 }
示例#9
0
 public ServiceDiscoverySourceBase GetDiscoverySource(ServiceDeployment serviceDeployment, ServiceDiscoveryConfig serviceDiscoveryConfig)
 {
     return(new LocalDiscoverySource(serviceDeployment.ServiceName));
 }